2012-05-04 54 views
0

我使用preg_match_all从另一个页面抓取URL和标题,并抓取是好的,但我不能让他们进入一个使用foreach!还是有另一种方式,而不是foreach?如何使用preg_match_all结合两个抓取的变量?

//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 &冠军)让它像

<a href='URL'>Title</a> 

回答

1

合并两个正则表达式中的一个镜头捕捉到这两个项目:

preg_match_all('/<a href="([^"]+)" class=l.+?>([^<]+)<\/a>/',$sear, $results); 
var_dump($results); 

现在你有两个URL和捕获组1和2

标题上这个表达式的改进将使用积极的前瞻来匹配关闭</a>,但为了简单起见,您当前的解决方案应该没问题。

编辑:我最初把它留给OP来弄清楚如何从结果中获取正确的输出。但是,这是一个工作示例。

for($i = 0; $i < count($results[1]); $i++) 
    echo 'URL: ' . $results[1][$i] . ', Title: ' . $results[2][$i]; 
+0

是的以及如何从$ results数组中使用foreach获取url和标题? –

+0

这是一个锻炼,让你找出答案。我已经编辑了一个关于如何实现所需输出的例子。 – nickb

+0

是的非常感谢你的帮助!它为我工作! –