匹配完全字符串而不必担心特殊字符

时间:2015-04-03 18:04:09

标签: php regex

我有大量的文本数据,其中包含许多特殊字符,我需要将其验证到其他数据(文本)源。

我的问题是:是否有可能逃避"正则表达式中的字符串,以便它不考虑特殊字符?

示例:

$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个字符表示要使用字符串"字面值"而不是包含正则表达式字符。

任何想法?

1 个答案:

答案 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);

将与其他文本中的给定字符串完全匹配。