Неизвестный модификатор '/' in …? что это?

Когда я написал следующее, я получаю такое предупреждение, и оно ничего не соответствует, но я уверен, что $row_search['content'] содержит $value

 preg_match_all("/[^\s]*".preg_quote($value)."[^\s]*/iu", $row_search['content'], $final_matched); WARNING:preg_match_all() [function.preg-match-all]: Unknown modifier '/' in C:\xampp\htdocs\finance\search\search.php on line 82 

почему я получаю такое предупреждение?

благодаря

Я предполагаю, что $value содержит косую черту / , которую не preg_quote :

Специальные символы регулярного выражения:. . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

Передайте разделитель, который вы используете для функции:

 preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched); // ---^ 

или использовать другой разделитель.

Вы должны изменить свой preg_quote($value) на preg_quote($value, "/") чтобы избежать разделителя.

В вашем примере, если $value содержит «(content / other)», он будет экранироваться как «(контент / другое)», и это в вашем регулярном выражении будет /[^\s]*\(content/other\)[^\s]*/iu как вы можете видеть, есть /, который приведет к сбою вашего регулярного выражения. Если вы явно говорите, что «/» является разделителем, тогда регулярное выражение будет /[^\s]*\(content\/other\)[^\s]*/iu

/ не является метасимволом PCRE, поэтому, хотя вы используете его как разделитель в своем регулярном выражении, preg_quote() не preg_quote() от него, потому что он не знает, что вы используете его как разделитель. Вам придется передать его в качестве второго параметра, как сказали остальные, для того, чтобы он тоже ускользнул:

 preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched); 

Укажите / как разделитель при использовании preg_quote :

 preg_match_all("~/[^\s]*~".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched); 

В противном случае значение a в значении $value не будет экранировано.