1
Hallo,
ich versuche gerade Quellcode von einem Freund zu verstehen. Er hat an einer Stelle, wo er ] als Zeichen meint, nicht \] , sondern \\] geschrieben. Ich bin eigentlich der Meinung, dies sei ein Fehler, und hab es gerade mal selbst in einem Codeschnipsel ausprobiert, ob die Ausgabe wirklich einen Unterschied macht. Macht sie nicht - aber ich verstehe nicht, wieso das doppelte \\ nicht stört. Tatsächlich spuckt ein <?php echo $regex; ?> mir in beiden Fällen denselben regulären Ausdruck aus, immer mit \] und nie mit \\] - also liegt es wohl an PHP selbst und nicht an der Syntax des regulären Ausdrucks, dass die Doppelung des Backslashs keine Auswirkungen hat - aber wieso ist das so???
Nächste Frage: Wenn ein Teilsuchmuster mit einem Leerzeichen beginnen soll (\s(Blabla)), wird als gefundener Match trotzdem dieses Leerzeichen nicht mit ausgegeben - kann ich irgendwie dafür sorgen, dass es dass doch wird?
Wenn ich mit preg_match_all einen Content nach einem "Tag-Anfang Ausdruck Tag-Ende" durchsuche, dann bekomme ich mehrere Matches, wenn sowas mehrmals in dem Content vorkommt. Wenn ich aber einfach nach "~[^A]*~" suche, also nach allen Zeichenfolgen ohne A, dann bekomme ich nur die Matches bis zum ersten Auftreten von A und danach keine weiteren mehr, d.h. da wird anscheinend nicht der ganze Content durchsucht, sondern nach dem ersten Teilergebnis einfach aufgehört - warum?
Wie kann ich z.B. schreiben, dass etwas die Buchstaben s,u,p,e,n,h in beliebiger Zeichenabfolge enthalten darf, aber nicht in der Zeichenabfolge suppenhuhn ??? Also sowas wie [supenh]* unter Ausschluß dieser ganz bestimmten Reihenfolge?
Danke erstmal für rasche Antworten....
ich versuche gerade Quellcode von einem Freund zu verstehen. Er hat an einer Stelle, wo er ] als Zeichen meint, nicht \] , sondern \\] geschrieben. Ich bin eigentlich der Meinung, dies sei ein Fehler, und hab es gerade mal selbst in einem Codeschnipsel ausprobiert, ob die Ausgabe wirklich einen Unterschied macht. Macht sie nicht - aber ich verstehe nicht, wieso das doppelte \\ nicht stört. Tatsächlich spuckt ein <?php echo $regex; ?> mir in beiden Fällen denselben regulären Ausdruck aus, immer mit \] und nie mit \\] - also liegt es wohl an PHP selbst und nicht an der Syntax des regulären Ausdrucks, dass die Doppelung des Backslashs keine Auswirkungen hat - aber wieso ist das so???
Nächste Frage: Wenn ein Teilsuchmuster mit einem Leerzeichen beginnen soll (\s(Blabla)), wird als gefundener Match trotzdem dieses Leerzeichen nicht mit ausgegeben - kann ich irgendwie dafür sorgen, dass es dass doch wird?
Wenn ich mit preg_match_all einen Content nach einem "Tag-Anfang Ausdruck Tag-Ende" durchsuche, dann bekomme ich mehrere Matches, wenn sowas mehrmals in dem Content vorkommt. Wenn ich aber einfach nach "~[^A]*~" suche, also nach allen Zeichenfolgen ohne A, dann bekomme ich nur die Matches bis zum ersten Auftreten von A und danach keine weiteren mehr, d.h. da wird anscheinend nicht der ganze Content durchsucht, sondern nach dem ersten Teilergebnis einfach aufgehört - warum?
Wie kann ich z.B. schreiben, dass etwas die Buchstaben s,u,p,e,n,h in beliebiger Zeichenabfolge enthalten darf, aber nicht in der Zeichenabfolge suppenhuhn ??? Also sowas wie [supenh]* unter Ausschluß dieser ganz bestimmten Reihenfolge?
Danke erstmal für rasche Antworten....