我有大量的文本数据,其中包含许多特殊字符,我需要将其验证到其他数据(文本)源。
我的问题是:是否有可能逃避"正则表达式中的字符串,以便它不考虑特殊字符?
示例:
$text = "My Random St. [486] s/n 445 (don't call these guys)";
preg_match("/$text/", $other_text);
在这里的示例中,$text
中有很多特殊字符,因为这是大量的传入文本要与大量的$other_text
字符串进行比较,有时实际上是数据包含regexps)所以我需要使用preg_match。
我能得到什么,是否有#34;在这个字符串中关闭特殊字符"分隔符的类型?
使用上面的例子:
$text = "My Random St. [486] s/n 445 (don't call these guys)";
preg_match("/%$text%/", $other_text);
此处,%
周围的$text
个字符表示要使用字符串"字面值"而不是包含正则表达式字符。
任何想法?
答案 0 :(得分:1)
您正在寻找的方法称为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);
将与其他文本中的给定字符串完全匹配。