Callam Geschrieben 5. Oktober 2010 Geschrieben 5. Oktober 2010 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) Zitieren
etreu Geschrieben 6. Oktober 2010 Geschrieben 6. Oktober 2010 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? Zitieren
lit-web Geschrieben 6. Oktober 2010 Geschrieben 6. Oktober 2010 Zitat von Callam Beitrag anzeigen Die Funktion multi_query kenne ich. Ich kenne diese Funktion nicht. multi_query stammt aus mysqli Gruß Lit-Web Zitieren
raiserle Geschrieben 10. Oktober 2010 Geschrieben 10. Oktober 2010 $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. Zitieren
Callam Geschrieben 13. Oktober 2010 Autor Geschrieben 13. Oktober 2010 @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 Zitieren
raiserle Geschrieben 14. Oktober 2010 Geschrieben 14. Oktober 2010 (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 14. Oktober 2010 von raiserle Nachtrag Zitieren
Empfohlene Beiträge
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.