2012-08-12 136 views
1

使用preg_match_all(),我想匹配是這樣的:preg_match_all()HTML標籤

...randomtext...>MATCH1</a>" (MATCH2)"...randomtext...編輯:澄清,這正是我試圖從數據中提取,包括括號,引號括起來的,尖括號等

這是我已經試過:preg_match_all("/^>(.+?)</a>\" \((.+?)\)\"$/", $htmlfile, $matches);

應該提取MATCH1$matches[1][0]MATCH2作爲$matches[2][0]

任何想法爲什麼它不工作?

感謝

+0

所以要清楚,你試圖匹配第一個標籤內的所有文本以及在第一個標籤後面的'''之後?你能詳細說明你試圖匹配的模式嗎? – 2012-08-12 05:23:39

+0

^正在開始這是你想要的嗎?我個人覺得你的例子太不明瞭,順便說一句,你需要逃避更多的字符http://php.net/manual/de/function.preg-quote.php – 2012-08-12 05:29:14

+0

對不起,我已經編輯了這個問題 - 我試圖從指定的字符串中提取MATCH1和MATCH2:'> MATCH1「(MATCH2)」'它可以在任何一邊有任何東西 – JoeRocc 2012-08-12 05:29:32

回答

3

你沒有逃脫你的結束標籤</a>

這應該工作:

preg_match_all("/>(.+?)<\/a>\" \((.*?)\)/", $htmlfile, $matches); 

請參閱Codepad example

3

你需要逃避你的模式/,你希望自己的方式掛靠在^$

所以很可能這將工作:preg_match_all("/>(.+?)<\/a>\" \((.+?)\)\"/", $htmlfile, $matches);

+0

謝謝smathy!我真的很感激! – JoeRocc 2012-08-12 05:35:56

+0

不客氣。 – smathy 2012-08-12 05:36:47