我使用preg_match_all从另一个页面抓取网址和标题,抓住就可以了但是我无法使用foreach将它们添加到一个页面中!还是有另一种方式而不是foreach?
//gets URLs of href='xxxx'
preg_match_all('/a href="([^"]+)" class=l.+?>.+?<\/a>/',$sear,$results);
//gets titles of >xxxx</a>
preg_match_all('/a href=".+?" class=l.+?>([^"]+)<\/a>/',$sear,$t);
以下代码显示抓取的网址
foreach ($results[1] as $url)
{
echo "<a href='$url'>$u</a> <br>";
$i++;
}
以下代码显示抓取的标题
foreach ($t[1] as $title)
{
echo $title;
$i++;
}
但我不知道如何在一个foreach中显示它们(url&amp; title)所以我可以使它像
<a href='URL'>Title</a>
答案 0 :(得分:1)
将两个正则表达式组合在一起拍摄两个项目:
preg_match_all('/<a href="([^"]+)" class=l.+?>([^<]+)<\/a>/',$sear, $results);
var_dump( $results);
现在,在捕获组1和组2时,您同时拥有URL和标题。
对此正则表达式的改进是使用正向前瞻来匹配结束</a>
,但为了简单起见,您当前的解决方案应该没问题。
编辑:我最初将其留给OP来弄清楚如何从结果中获取正确的输出。但是,这是一个有效的例子。
for( $i = 0; $i < count( $results[1]); $i++)
echo 'URL: ' . $results[1][$i] . ', Title: ' . $results[2][$i];