2014-10-08 20 views
0

我有下面的代碼:如何將方括號作爲字符表達式匹配?

<?php 

// $content = LOTS OF CONTENT HERE 

preg_match('/Token: \'(.*?)\'/', $content, $token); 
print_r($token); // Works like a charm. 

preg_match_all("/params\['Au' + 'thKey'\] = (.*?);/", $content, $match2); 
print_r($match2); // Returns blank array. 

檢查一切之後,我來到了解決方案,有一些問題逃逸。任何人都可以幫我嗎?我認爲它與方括號的東西?

PS:原文以正則表達式是params['Au' + 'thKey'] = TEXTHERE;

+1

你能告訴我們一個示例文本,並從這個文本要精確匹配 – pomeh 2014-10-08 15:44:58

回答

2

的問題是與+。您需要將其轉義爲+,如\+,否則它會重複前一個字符一次或多次。

params\['Au' \+ 'thKey'\] = (.*?); 

DEMO

代碼:

preg_match_all("~params\['Au' \+ 'thKey'\] = (.*?);~", $content, $match2); 
0

將其更改爲

preg_match_all("/params\\['Au' \\+ 'thKey'\\] = (.*?);/", $content, $match2); 
+0

你解釋什麼不需要雙重逃避那些chars。 – Synchro 2014-10-08 17:02:16

+0

這是爲什麼?雙引號不能不逃脫轉義?或者他們只能避免雙引號_and_逃脫? – sln 2014-10-08 17:12:16

+0

http://php.net/manual/en/regexp.reference.escape.php – Synchro 2014-10-08 17:18:19

相關問題