<?PHP
$key
=
"电脑"
;
$url
'http://m.baidu.com/s?word='
.
;
$result
=
file_get_contents
(
);
$pattern
'#class="resitem".*?<a.*?href="(.*?)".*?>(.*?)</a>#si'
;
preg_match_all(
,
$matches
);
echo
'<pre>'
;
print_r(
[1]);
[2]);
;
'http://www.baidu.com/s?word='
;
);
'#class="result.*?class="t".*?<a.*?href="(.*?)".*?>(.*?)</a>#si'
;
);
;
[1]);
[2]);
//说明:(分析PC版)
//正则匹配首先要分析HTML结构,锁定循环部分,<tableid="?"class="result...></table>
//然后取得最简锚点,class="result(这里没有后面的",因为存在class="result-op"这种)
//接下来再对循环内部进行取锚点,class="result...<a...href="..."...>...</a>
//而在整个result中可能存在多种<a.*?href="(.*?)".*?>(.*?)</a>这样的格式,
//因此找到依赖class="t",得到class="result...class="t"...<a...href="..."...>...</a>
//过滤掉其他部分,留下我们想要的内容。
//从而可以在匹配结果中顺序取出,子模式是加括号。
//'#class="result.*?class="t".*?<a.*?href="(.*?)".*[问号]>(.*?)</a>#si'
//注:?>注释时连在一起写会语法错误,使用时请将[问号]换回来
//End_PHP
原文链接:https://www.f2er.com/regex/362214.html