Php 未知修饰符'/';在里面它是什么?
当我写下以下内容时,我得到了这样的警告,它与任何内容都不匹配,但我确信,Php 未知修饰符'/';在里面它是什么?,php,regex,warnings,preg-match,Php,Regex,Warnings,Preg Match,当我写下以下内容时,我得到了这样的警告,它与任何内容都不匹配,但我确信,$row\u search['content']包含$value preg_match_all("/[^\s]*".preg_quote($value)."[^\s]*/iu", $row_search['content'], $final_matched); WARNING:preg_match_all() [function.preg-match-all]: Unknown modifier '/' in C:\xam
$row\u search['content']
包含$value
preg_match_all("/[^\s]*".preg_quote($value)."[^\s]*/iu", $row_search['content'], $final_matched);
WARNING:preg_match_all() [function.preg-match-all]: Unknown modifier '/' in C:\xampp\htdocs\finance\search\search.php on line 82
为什么我会收到这样的警告信息
感谢在使用以下命令时指定
/
作为分隔符:
否则,$value
的值中的/
将不会被转义。您也应该将您的值改为转义分隔符
在您的示例中,如果
$value
包含“(content/other)”,它将被转义为“(content/other)”,并且您的正则表达式中的这个将是/[^\s]*\(content/other\)[^\s]*/iu
,正如您可以看到的那样,有一个/将使您的正则表达式崩溃。如果您明确地说“/”是分隔符,那么正则表达式将是/[^\s]*\(content\/other\)[^\s]*/iu
我假设$value
包含斜杠/
,它不会通过以下方式转义:
特殊的正则表达式字符是:\+*?[ ^ ] $ ( ) { } = ! < > | : -代码>
将使用的分隔符传递给函数:
preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);
// ---^
或者使用另一个定界符。/
不是PCRE元字符,因此,尽管您在正则表达式中使用它作为定界符,preg_quote()
不会转义它,因为它不知道您正在使用它作为定界符。您必须将其作为第二个参数传入,正如其他人所说的,这样才能将其转义:
preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);
$value
的内容是什么?
preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);