preg匹配file_get_contents中具有相同类的所有标记

时间:2014-09-25 16:54:42

标签: php regex preg-match preg-match-all

我想从html文件中获取具有相同类的所有标签, 我试过了:

$html = file_get_contents('http://10tv.nana10.co.il/Category/?CategoryID=400008');
preg_match_all('/<a\s+class="FooterNavigationItemValue">(.*)<\/a>/', $html, $div_array); 
return var_dump($div_array);

但是我得到一个空数组,帮忙?

1 个答案:

答案 0 :(得分:3)

正如Marc B评论的那样,使用DOM将是您最好的选择。但既然你正在寻找正则表达式:

'#<a.*?class="FooterNavigationItemValue".*?>(.*?)</a>#s'

P.S。我查看了代码中提到的网站,这段正则表达式完美地完成了它的工作。

现在解释: .*?之前和之后的两个class="FooterNavigationItemValue"是为了确保字符串在class="FooterNavigationItemValue"之前和之后的某些内容仍然匹配。

我使用(.*?)代替(.*)来防止正则表达式贪婪。更多信息可以在这里找到:What do lazy and greedy mean in the context of regular expressions?