匹配精确的字符串而不用担心特殊字符


Match exact string without worrying about special characters

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

我的问题是:是否可以在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);

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