php正则匹配的问题

在采集的时候有一个在抓取的内容里面有很多a链接!
其中我要获取

<ul class="list_box">
<li><a href="xxxx.html">xxxxx</a></li>
<li><a href="xxxx.html">xxxxx</a></li>
<li><a href="xxxx.html">xxxxx</a></li>
<li><a href="xxxx.html">xxxxx</a></li>
<li><a href="xxxx.html">xxxxx</a></li>
<li><a href="xxxx.html">xxxxx</a></li>
</ul>

但是我却无法获得每一个地址,是我写的有问题吗?

$patten = "/<ul\s*class=\"list_box\">\s*<li><a\s*href=\"(.*)\">(.*)<\/a><\/li>\s*<\/ul>/s";

居然匹配不到 请问下大神什么情况?
有时候能拿到 但是只能拿到一个....
我想要的是获取到全部的a地址 之后遍历采集

阅读 2.1k
2 个回答

你是想要这种效果?

clipboard.png

<ul class="list_box">\s(<li><a\s*href=\"(.*)\">(.*)</a><\/li>\s)*</ul>

==============================

要获取所有 url 感觉要分两步走

代码

<?php
$strPattern = '/<ul class="list_box">\s(?<lists>.*?)<\/ul>/s';
$strSubject = '<ul class="list_box">
<li><a href="xxxx1.html">xxxxx</a></li>
<li><a href="xxxx2.html">xxxxx</a></li>
<li><a href="xxxx3.html">xxxxx</a></li>
<li><a href="xxxx4.html">xxxxx</a></li>
<li><a href="xxxx5.html">xxxxx</a></li>
<li><a href="xxxx6.html">xxxxx</a></li>
</ul>';
preg_match_all($strPattern, $strSubject, $arrMatches);

$strPattern2 = '/<li><a\s*href=\"(?<url>.*?)\">(.*?)<\/a><\/li>\s/s';
preg_match_all($strPattern2, $arrMatches['lists'][0], $arrMatches2);
var_dump($arrMatches2['url']);

结果

array(6) {
  [0]=>
  string(10) "xxxx1.html"
  [1]=>
  string(10) "xxxx2.html"
  [2]=>
  string(10) "xxxx3.html"
  [3]=>
  string(10) "xxxx4.html"
  [4]=>
  string(10) "xxxx5.html"
  [5]=>
  string(10) "xxxx6.html"
}
$html = <<< HTML
<ul class="list_box">
    <li><a href="xxxx.html">xxxxx</a></li>
    <li><a href="xxxx.html">xxxxx</a></li>
    <li><a href="xxxx.html">xxxxx</a></li>
    <li><a href="xxxx.html">xxxxx</a></li>
    <li><a href="xxxx.html">xxxxx</a></li>
    <li><a href="xxxx.html">xxxxx</a></li>
</ul>
HTML;

$pattern_href = '/href=[\"\'](.*)[\"\']/i';
preg_match_all($pattern_href, $html, $href);
var_dump($href[1]);

$pattern_title = '/[\'\"]\>(.*)\<\/a\>/i';
preg_match_all($pattern_title, $html, $title);
var_dump($title[1]);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题