2

我有一个动态的产品列表,我正在检查它。问题是在我的产品名称中如果有 / 那么我的 preg_match 给了我 preg_match() [function.preg-match]: Unknown modifier error

这是一个有效的产品名称示例

$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 />";
            }
}
4

2 回答 2

5

当向正则表达式中插入值,而这些值本身并不充当正则表达式时,请始终使用preg_quote.

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

preg_match("/" . preg_quote($decodedProduct, "/") . "/", $result->nodeValue)
于 2013-08-04T23:47:58.200 回答
-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 />";
            }
}
于 2013-08-04T23:43:22.977 回答