/ / Dopasuj wyrażenie utf-8 wewnątrz łańcucha za pomocą preg_match () - php, regex, preg-match

Dopasuj wyrażenie utf-8 wewnątrz łańcucha za pomocą preg_match () - php, regex, preg-match

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 № 1

Dwie 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.