当斜杠在变量中时,preg_match会发出问题

时间:2013-08-04 23:38:10

标签: php cakephp php-5.3

我有一个动态的产品列表,我正在检查它。问题是,在我的产品名称中,如果有一个/然后我的preg_match给了我preg_match()[function.preg-match]:未知的修饰符错误

这是一个可以使用的产品名称的示例

$productName = "Samuel Cream Leather Sofa, Loveseat, Club Chair, & Ottoman Set";

这不起作用

$productName = "Samuel Cream Leather Sofa, Loveseat, Club Chair, w/ & Ottoman Set";



foreach ($results as $result) { 
            $decodedProduct = urldecode($product);
            if(preg_match("/$decodedProduct/",$result->nodeValue)){
            echo $decodedProduct."-------------".$result->nodeValue."<br />";
            }
}

2 个答案:

答案 0 :(得分:5)

将值插入到不用作正则表达式的正则表达式中时,请始终使用preg_quote

要避免分隔符冲突,请使用preg_quote的第二个参数来定义需要引用的分隔符char:

preg_match("/" . preg_quote($decodedProduct, "/") . "/", $result->nodeValue)

答案 1 :(得分:-2)

尝试使用stripslashes()。

http://php.net/manual/en/function.stripslashes.php

$productName = stripslashes("Samuel Cream Leather Sofa, Loveseat, Club Chair, w/ & Ottoman Set");



foreach ($results as $result) { 
            $decodedProduct = urldecode($product);
            if(preg_match("/$decodedProduct/",$result->nodeValue)){
            echo $decodedProduct."-------------".$result->nodeValue."<br />";
            }
}