Php preg_match函数不使用斜杠

Php preg_match函数不使用斜杠,php,preg-match,Php,Preg Match,我有一个比较两个字符串的函数。除非字符串包含斜杠/,否则它工作正常。我能做些什么来解决这个问题 function in_array_r($item , $array){ return preg_match('/"'. preg_quote($item, "/") .'"/i' , json_encode($array)); } 我像这样运行它: if(in_array_r($row['name'], $products)){ // } 因此,silverware with g

我有一个比较两个字符串的函数。除非字符串包含斜杠
/
,否则它工作正常。我能做些什么来解决这个问题

function in_array_r($item , $array){
    return preg_match('/"'. preg_quote($item, "/") .'"/i' , json_encode($array));
}
我像这样运行它:

if(in_array_r($row['name'], $products)){
    //
}

因此,
silverware with golden spoon new
起作用,而
silverware with golden spoon/new
不起作用,因为斜杠即使在两个数组中都存在。

可能您必须像这样使用转义字符:

silverware with golden spoon \/ new

这将跳过\号后面的任何字符。

我将结合使用两种方法来解决您的问题

首先,如果您知道数据中经常会出现斜杠,那么应该选择不同的分隔符。我通常使用tildes而不是前斜杠,因为我解析了很多URL,而且我已经厌倦了一直担心逃避它们

我要做的第二件事是将
JSON\u UNESCAPED\u SLASHES
标志与
JSON\u encode
一起使用。这里有一个例子来说明我的意思:

<?php

$products = array('silverware with golden spoon new', 'silverware with golden spoon / new');

$item = 'silverware with golden spoon / new';

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


if(in_array_r($item, $products)){
    print "Match found!";
}
else {
    print "No match was found.";
}
下面是一个工作演示:


您是否已将正则表达式丢弃并查看了它?谢谢您的回复!你是说比较两个阵列?两者的内容几乎相同。我已经看过了。不,我指的是
preg\u quote
的返回值。您需要确保它包含预期值。还转储json编码的数组。然后访问regex101.com并使用这两个工具来验证regex是否正在工作。请尝试一下!:)您的
$item
Match found!