0

我希望有人知道,出了什么问题。我做了一个解析器来获取所有

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

我检查了一下,curl 给了我所有的页面

<html>

直到

</html>

问题是在不使用任何 DOM 的情况下制作解析器,只需 curl 和 regexp。

4

1 回答 1

0

好的,我设法通过在我的正则表达式中添加更多字符来解决这个问题:

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

我添加了一些空格符号,例如“=”、“&”和“?” 在链接正文中授予。

于 2013-10-31T13:52:44.497 回答