preg_match
lithaila
- php
0 André Laugks0 EisFuX0 Lithaila
Hallo!
Ich habe folgendes Problem:
Ich versuche einen String zu überprüfen, ob ein Wort _nicht_ darin vorkommt, gleichzeitog aber auch, daß bestimmte Wörter drin vorkommen.
z.B:
$string = "Meine Oma fährt im Hühnerstall Motorrad!";
Nun will ich wissen, ob "Oma" und "Motorrad" drin vorkommt, dazwischen aber _nicht_ das Wort "Hühnerstall".
also irgendwie so:
preg_match("/.*?Oma.*?(NICHT: Hühnerstall).*?Motorrad.*?/", $string, $result);
Wie also muss der Teil: (NICHT: Hühnerstall) aussehen ?
Hallo!
preg_match("/.*?Oma.*?(NICHT: Hühnerstall).*?Motorrad.*?/", $string, $result);
Wie also muss der Teil: (NICHT: Hühnerstall) aussehen ?
Ich würde testen ober er enthalten ist (einfacher) und nicht ob er nicht enthalten ist. Man muß es einfach anders betrachten.
preg_match("/Oma[\w\s]+Hühnerstall[\w\s]+Motorrad/is", $string, $result);
Es ist schwierig, den bei Hühnerstall (-1 * l) ist der Ausdruck falsch sowie bei Huehnerstall.
MfG, André Laugks
Berichtigung:
Es ist schwierig, den bei Hühnerstall (-1 * l) ist der Ausdruck falsch sowie bei Huehnerstall.
Es ist schwierig, den bei Hühnerstal (-1 * l) ist der Ausdruck falsch sowie bei Huehnerstall.
MfG, André Laugks
Hallo lithaila,
tja, reguläre Ausdrücke (was fürn blödes Wort) können zwar eine ganze Menge, aber eben nicht alles.
Nun will ich wissen, ob "Oma" und "Motorrad" drin vorkommt, dazwischen aber _nicht_ das Wort "Hühnerstall".
Wenn du auf die Klausel "dazwischen" verzichten könntest, wäre hier folgender Lösungsansatz:
(1) Überprüfe, ob "Oma" und "Motorrad" im zu durchsuchenden String vorkommen.
(2) Überprüfe, ob "Hühnerstall" im zu durchsuchenden String vorkommen.
(3) Verknüpfe beide Ergebnisse, so wie du sie brauchst, zum Beispiel:
(Mein_Ergebnis_ist_wahr) wenn (1) und nicht (2)
Ich verwende das Teil in einem preg_match, so dass ich die Überprüfung in einem Ausdruck formulieren muß.
Aber man kann das Problem wohl reduzieren auf:
Ich wuerde gerne das abc "zusammenkleben", so dass er alles findet was nicht "abc" ist.
Wenn man den gesuchten Ausdruck also anwendet, soll rauskommen:
abc => false
bca => true
acb => true
usw...