Как использовать шаблон PHP preg_match delimiter в этом коде? - PullRequest
0 голосов
/ 05 июля 2019

После прочтения здесь и после попытки preg_quote я понимаю ошибку и понимаю, что должен использовать разделители.

Проблема в том, что одним из разделителей является косая черта, которая также является частью строки, которую я пытаюсь сравнить.Я не понимаю, как исправить мою проблему.Где я могу поместить разделители в мой код?

Я использую preg_match для идентификации данного продукта с именем продукта следующим образом:

if (preg_match("/\b$productcolor\b/i", "$searchProductName")) { 

//do something
}

Это хорошо работает, если имя продукта выглядитнапример:

$searchProductName = Yupoong 6606 Retro Trucker Cap (Red);//$_POST
$productcolor = 'Red';//$_POST

Preg_match возвращает неизвестный модификатор, если в имени есть косая черта, например:

$searchProductName = Yupoong 6606 Retro Trucker Cap (Rust Orange/ Khaki);//$_POST
$productcolor = 'Rust Orange/ Khaki';//$_POST

Я пытаюсь решить эту проблему, устранивпрямая косая черта выглядит так:

$productColor = str_replace('/', ' ', $productcolor);

Это вернет строку, подобную этой Rust Orange Khaki.Но при удалении косой черты preg_match не соответствует цвету в названии.

Как я могу решить эту проблему?Имейте в виду, НЕ все продукты имеют косую черту в названии.Некоторые из них имеют один цвет.

1 Ответ

1 голос
/ 05 июля 2019

preg_quote ваш друг.Экранирует специальные символы.

if (preg_match("/\b" . preg_quote($productcolor, "/") . "\b/i", $searchProductName)) { 
    //do something
}
...