ich folgend in einer MySQL-Datenbank am Speicherung:preg_match_all - Auszug Schlüssel/Wert von Vorlage
%URL% https://google.com
%TEXT% Hello world!
%LARGETEXT% Hello
My name is ...
I am from ...
Mein Ziel ist es, die Saiten zu machen, die in% auf PHP-Array-Schlüssel eingewickelt werden und die Zeichenfolge sind neben die Werte.
Das Problem ist, dass meine Regex die mehrzeiligen Strings nicht extrahiert. Hier
ist der Code:
preg_match_all ("/%(\w+)%(.*)/", $msg, $matches);
Es spielt Ausgabe:
[1]=>
array(3) {
[0]=>
string(5) "BASIC"
[1]=>
string(4) "TEXT"
[2]=>
string(9) "LARGETEXT"
}
[2]=>
array(3) {
[0]=>
string(18) " https://google.de"
[1]=>
string(13) " Hello world!"
[2]=>
string(6) " Hello"
}
In der zweiten Reihe nur 'Hallo' gezeigt, statt:
Hello
My name is ...
I am from ...
I tryed verschiedene regex aber ich komme immer zum selben ergebnis.
Thank (entfernen Sie die
trim
, wenn Sie tatsächlich, obwohl die Zeilenumbrüche behalten wollen .. ich Sie nicht nur angenommen hat) Sie eine Menge. Ich werde Ihre Antwort so bald wie möglich als akzeptiert markieren. Das löst mein Problem. – user2933212Die zwei Muster sind falsch. Was passiert, wenn Sie eine URL mit Sonderzeichen durch hexadezimale Repräsentationen ersetzen, wie zum Beispiel: http: //domain.tld/fo%20%20lder/index.php? Path = http% 3A% 2F% 2Fotherdomain.tld'? Anstatt "%" zu verwenden, sollten Sie den Zeilenumbruch verwenden. –
@CasimiretHippolyte: Sie können nicht sagen, dass die Muster * falsch * sind, ich schlug das Muster basierend auf dem ursprünglichen Muster vor, das * sich nicht auf die Zeilenumbrüche verlassen hat. Es ist einfach, dem ersten Regex Anker und einen MULTILINE-Modifikator hinzuzufügen, um es zu fixieren, und dann kann es leicht abgerollt werden. –