2015-04-03 84 views
0

我有大量的文本數據,這裏和那裏包含很多特殊字符,我需要驗證它到其他數據(文本)源。匹配精確字符串,無需擔心特殊字符

我的問題是:是否有可能在正則表達式中「轉義」一個字符串,以便它不考慮特殊字符?

例如:

$text = "My Random St. [486] s/n 445 (don't call these guys)"; 
preg_match("/$text/", $other_text); 
在這裏的例子

,也有$text很多的特殊字符,因爲這是被比作大量$other_text字符串的傳入文本的巨量,有時數據實際上包含正則表達式),所以我需要使用preg_match。

我得到了什麼,是否有一個「關閉此字符串中的特殊字符」類型的分隔符?使用上面的例子

$text = "My Random St. [486] s/n 445 (don't call these guys)"; 
preg_match("/%$text%/", $other_text); 

這裏,%字符周圍$text表示該字符串是要採取「文字」,而不是作爲含有正則表達式的字符。

有什麼想法?

+0

這是一個文字示例,還是使用佔位符文本的'$ text'?另外,你能否更新你的帖子來解釋當你說「特殊字符」時你的意思(例如你的例子中沒有特殊字符,我可以告訴它,它都是純ASCII)? – 2015-04-04 17:04:10

回答

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

將在其他文本給定的字符串完全匹配。