在PHP中搜索Google搜索结果

Ale*_*lex 1 php regex

我想从搜索结果中获取链接.有人可以帮忙用正则表达式来做这个吗?我有这个,它不起作用:

 preg_match_all("/<h3(.*)><a href=\"(.*)\"(.*)<\/h3>/", $result, $matches);
Run Code Online (Sandbox Code Playgroud)

Pet*_*han 5

你的模式很可能是最大的问题,因为它的贪婪与懒惰本质.将其更改为以下内容应解决该问题......

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我很清楚,这可能会被选中了).