我有大量的文本数据,其中到处都包含许多特殊字符,我需要向其他数据(文本)源验证它。
我的问题是:是否可以在regex中"转义"字符串,使其不考虑特殊字符?
示例:
$text = "My Random St. [486] s/n 445 (don't call these guys)";
preg_match("/$text/", $other_text);
在这里的例子中,$text
中有很多特殊字符,因为这是大量传入的文本,与大量的$other_text
字符串相比,有时数据实际上包含regexp),所以我需要使用preg_match。
我的意思是,是否有"关闭此字符串中的特殊字符"类型的分隔符?
使用上面的例子:
$text = "My Random St. [486] s/n 445 (don't call these guys)";
preg_match("/%$text%/", $other_text);
这里,$text
周围的%
字符表示字符串将被视为"文字",而不是包含正则表达式字符。
有什么想法吗?
您要查找的方法名为preg_quote
,它将转义任何相关字符,以获得"普通、愚蠢"的字符串匹配。
http://php.net/manual/en/function.preg-quote.php
$text = "My Random St. [486] s/n 445 (don't call these guys)";
preg_match("/". preg_quote($text, "/") . "/", $other_text);
将与其他文本中的给定字符串完全匹配。