我想从搜索结果中获取链接.有人可以帮忙用正则表达式来做这个吗?我有这个,它不起作用:
preg_match_all("/<h3(.*)><a href=\"(.*)\"(.*)<\/h3>/", $result, $matches);
Run Code Online (Sandbox Code Playgroud)
你的模式很可能是最大的问题,因为它的贪婪与懒惰本质.将其更改为以下内容应解决该问题......
preg_match_all('#<h3.*?><a href="(.*?)".*?</h3>#', $result, $matches);
print_r($matches[1]);
Run Code Online (Sandbox Code Playgroud)
可能有一些罕见的URL可能会破坏模式,但您可能不会碰到一个.我会指出,尽管使用API是一个更好的选择,但仍然有一个好点.
至于咧回答与"你不能用正则表达式解析HTML,使用DOM" ......虽然你不能创建一个通用的HTML解析器(和应该使用DOM该任务),你可以在一组模式匹配的人您知道的文本遵循某种结构,结构是HTML的事实是无关紧要的.是的,如果谷歌改变自己的布局,将可能打破,但是这也可能是一个DOM解析器也是如此.(PS我很清楚,这可能会被选中了).
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |