2013-10-31 30 views
0

我希望有人知道,什麼是錯的。我做了一個語法分析器來獲得所有的標籤。preg_match_all函數爲我提供了可能的第一個159個結果261

<a href="blabla">Link</a> 

標籤。我在http://www.bbc.co.uk/上測試它。在我測試的頁面上有261個,我只收到了159個。我手動檢查了它,發現它們中的每一個,但是我的結果數組只有159個元素。這個限制的原因是什麼?

preg_match_all('/<a\s[^\>]*href\=[\'"]?((?:http\:\/\/)?(?:[_\-a-zA-Z0-9\.]*[_a-zA-Z0-9\.\/]))*[\'"]/', $page, $matches); 

我查了一下,捲曲給了我所有的頁面從

<html> 

直到

</html> 

的問題是使解析器沒有任何DOM使用,只需捲曲和正則表達式。

+0

什麼標籤?你想匹配什麼? –

+0

你讀過這個:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags? – sectus

+0

在您的頁面中包含更多詳細信息,例如所有標籤信息。 –

回答

0

OK,我設法通過加入一些字符我正則表達式來解決這個問題:

preg_match_all('/<a\s*[^\>]*href\s*\=\s*[\'"]?((?:http\:\/\/)?(?:[_\-a-zA-Z0-9\.]*[\?\=\&_a-zA-Z0-9\.\/]))*[\'"]/', $page, $matches); 

我添加了一些空格符號,如「=」,「&」和「?」在鏈接的主體中被授予。

相關問題