Jestem "triyin", aby dopasować jakieś wyrażenie w ciągu znaków jako słowo (stristr nie działa, ponieważ nie chcę wyników, które zawierają "słowo")
Używam tego kodu:
function striword($string, $word) {
return preg_match("/(?:[[:space:]]|^)" . $word . "(?:[^w]|$)/i", $string);
}
Ale kiedy próbuję dopasować ciąg taki jak "to jest ciąg" nie działa on zgodnie z oczekiwaniami :(
Przykład:
//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
Odpowiedzi:
2 dla odpowiedzi № 1Dwie opcje:
Użyj zakotwiczeń granic słów (użyteczne, jeśli masz do czynienia z rzeczywistymi, alfanumerycznymi słowami):
preg_match("/b" . $word . "b/i", $string);
Lub użyj spacji jako separatorów:
preg_match("/(?:^|s)" . $word . "(?:s|$)/i", $string);
Jeśli używasz ciągów Unicode i chcesz dopasować słowa Unicode, nie zapomnij o /u
modyfikator.