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!