• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

regEx verbesserung

nvidia

New member
Warum klappt das nicht? Wie kriegt man den Code funktionieren?
Code:
preg_match("/(?<=^Subject:\s).*(?=$[A-Z\)])/im",$test,$matches,PREG_OFFSET_CAPTURE);
Ich denk das ist am Einfachsten Nachzuvollziehen der Code.
Finde alles was mit
\nSubject: anfängt und mit \n[A-Z oder )] aufhört.
Damit sollte gemached werden z.b.:
\nSubject: Hallo\nType:Huhu
Aber nicht:
\nSubject: Der Wurm \n Type:Huhu);
Leider krieg ich nur ein leeres array zurück gegeben woran liegt das?
Hier mal ein Testcode:
Code:
<?php
$try = "Subject: Hello World \nType:Huhu";//Hier doppelte " statt '
preg_match("/(?<=^Subject:\s).*(?=$[A-Z\)])/im",$try,$matches,PREG_OFFSET_CAPTURE);
var_dump($matches);
?>
 
Zuletzt bearbeitet:
Ich komme zwar aus dem JS-Lager, das dürfte aber in PHP so ähnlich funktionieren.

Code:
$pattern = "/^(\nSubject:\s).*\n([A-Z]|\))$/";

Ist nicht getestet...
 
Weil \n in single quotes nicht als newline interpretiert wird, sondern nur in double quotes: "\n"
 
okay danke so klappt das:
Code:
"/(?<=^Subject:\s).*(?=[\r\n|\r|\n][A-Z\)])/im";
aber wenn man [\r\n|\r|\n] durch $ ersetzt funktioniert das nicht.
Zudem frisst der . keine \n, er sollte das aber durch /m am Ende tun.
Das kann man mit (.|[\r\n|\r|\n]\s) umgehen, ist aber komisch
Wieso?
 
Zuletzt bearbeitet:
Zurück
Oben