Ошибка preg_match () с строкой, содержащей слэши

У меня есть такая функция:

function in_array_r($item , $array){ return preg_match('/"'.$item.'"/i' , json_encode($array)); } 

и затем я использую его как:

 if(in_array_r($row['name'], $items_array)){ // something.. } 

Он работает, если $row['name'] содержит что-то вроде blah / blah / something , и в этом случае он говорит, что он не может найти его в массиве, даже если он существует.

Как это исправить?

Это связано с тем, что слэш в вашем вводе: blah / blah / something рассматривается как разделитель для регулярного выражения.

Чтобы решить эту проблему, вы можете избежать ввода с помощью preg_quote() , например

 function in_array_r($item , $array){ return preg_match('/"'. preg_quote($item, "/") .'"/i' , json_encode($array)); }