Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

preg_split - Trennzeichen nicht in Singlequotes

Empfohlene Antworten

Hi,

ich möchte einen String mit Semikolon als Trennzeichen zerlegen.

Das Semikolon soll allerdings nur dann als Trennzeichen erkannt werden, wenn es nicht zwischen zwei Singlequotes steht.

Singlequotes können mit escaped werden durch ein Backslash. Ein Backslash kann durch ein Backslash escaped werden.

Einfache RegExen bekomm ich zwar hin, aber sowas geht über meine kenntnisse weit hinaus. Kann mir da lemand bei helfen?

Hintergrund des Ganzen ist, dass ich mehrere Querys in einem String habe, die durch Semikolon getrennt sind.

Die Funktion multi_query kenne ich. Leider ist mir bei jedem Versuch damit die CPU Auslastung auf 100% gegangen und der Server hat nicht mehr reagiert. (Nein, es liegt nicht an einer zu langsammen CPU)

Das Semikolon soll allerdings nur dann als Trennzeichen erkannt werden, wenn es nicht zwischen zwei Singlequotes steht.


$pattern = "[^']\s*;\s*[^']"
[/PHP]

Singlequotes können mit escaped werden durch ein Backslash. Ein Backslash kann durch ein Backslash escaped werden.

Was ist erlaubt und was nicht? Ich sehe da nicht durch.

Die Funktion multi_query kenne ich.

Ich kenne diese Funktion nicht.

Hast du denn Select-Statements oder nur UPDATES und INSERTs?


$pattern = "[^']\s*;\s*[^']"
[/PHP]

Naja, damit macht es genau - was er nicht will.... zumal damit noch Zeichen verloren gehen.

Mit nur - einmal kurz preg_split benutzen ist es leider nicht getan.

@etreu

die letzte query ist immer ein select...

die querys davor können sein:

  • create temporary table ...
  • drop temporary table ...
  • update ...
  • insert ...
  • delete ...

das ganze hat den sinn, dass joins zu langsamm sind und ich mir deswegen vor der select-Anweisung alles mit temporären tabellen zusammenbaue was ich brauche

@raiserle

befürchte ich auch so langsam, nur habe ich leider keine idee wo ich da anfangen soll

vllt kennt auch jemand was fertiges wo das problem schon gelöst wurde?

hab schon in den quellcodes von phpmyadmin gesucht, aber leider nicht mit großem erfolg

ist zu umfangreich als dass ich mich da zurecht finden würde

Was fertiges kenne ich nicht.

Wenn ich das bauen müsste - würde ich anfangen....

Erstmal die geQuoteten Strings rauszuschupsen.

'Hier ; soll das Semikolon im String stehen' ; 'Und das vorhergehnende soll als Trenner dienen' ; usw... ; usw...

Wenn du die gequoteten Strings hast, bleibt ja nur das Semikolon als Trenner über !

So viel zur Überlegung. Den RegEx musst du nun noch schreiben ;)

lG

ps. .*? sollte helfen

Bearbeitet von raiserle
Nachtrag

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.