【发布时间】:2015-10-30 11:43:42
【问题描述】:
我正在尝试转义一个字符串以在 PHP 中的正则表达式中使用。到目前为止,我尝试过:
preg_quote(addslashes($string));
我认为我需要addslashes 才能正确解释字符串中的任何引号。然后preg_quote 转义正则表达式字符。
但是,问题是引号用反斜杠转义,例如\'。但随后preg_quote 用另一个反斜杠转义,例如\\'。因此,这使报价再次未转义。切换这两个函数也不起作用,因为这会留下一个未转义的反斜杠,然后将其解释为特殊的正则表达式字符。
PHP中是否有一个函数来完成这个任务?或者怎么做?
【问题讨论】:
-
你的正则表达式在哪里?也发一下
-
哦,我认为问题与我使用的实际正则表达式无关。目前我正在尝试使用
'\(?i)(?<=^|[^a-z])'.preg_quote(addslashes($string)).'\i',但它不起作用。 -
您的分隔符错误,请改用斜杠或波浪线。
addslashes没用。使用preg_quote第二个参数。请注意(?<=^|[^a-z])与(?<![a-z])相同 -
你只需要
'/(?<![a-z])'.preg_quote($string, '/').'/i' -
@Daniel :看看 php 手册。 (或使用包含所有 php 函数描述的 aptana 之类的 IDE)