Ich triyin, um eine Phrase in einer Zeichenfolge als ein Wort (stristr funktioniert nicht, da ich nicht Ergebnisse, die das Wort enthalten wollen)
Ich benutze diesen Code:
function striword($string, $word) {
return preg_match("/(?:[[:space:]]|^)" . $word . "(?:[^w]|$)/i", $string);
}
Aber wenn ich versuche, einen String wie "das ist ein String" zu finden, funktioniert es nicht wie erwartet :(
Beispiel:
//Phrase to match: "soda and beer"
striword($string, "soda and beer");
String 1: "I like soda and beer" MATCH: TRUE
String 2: "I like soda and beerbum" MATCH: FALSE
String 3: "I like soda and beer, it"s nice!" MATCH: TRUE
Antworten:
2 für die Antwort № 1Zwei Optionen:
Verwenden Sie entweder Wortgrenzenanker (nützlich, wenn Sie mit tatsächlichen alphanumerischen Wörtern arbeiten):
preg_match("/b" . $word . "b/i", $string);
Oder verwenden Sie Leerzeichen als Trennzeichen:
preg_match("/(?:^|s)" . $word . "(?:s|$)/i", $string);
Wenn Sie Unicode-Zeichenfolgen verwenden und Unicode-Wörter zuordnen möchten, vergessen Sie nicht /u
Modifikator.