Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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)

Geschrieben

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?

Geschrieben

$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.

Geschrieben

@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

Geschrieben (bearbeitet)

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...