preg_match使用多个通配符在php中不起作用

时间:2018-12-23 20:55:58

标签: php

我正在从具有此类数据(我只复制了其中一部分)的网站上使用file_get_contents:

<TD class=cellres align=left><a href=results.php?team=Wolves&league=EngPrem>Wolves</a></TD> <TD class=cellres align=left><a href=results.php?team=Liverpool&league=EngPrem><b>Liverpool</b></a></TD>

这是我的preg_match代码:

preg_match('/<TD class=cellres align=left><a href=results.php?team=.*&league=.*>(.*?)<\/TD> /',$contents,$home);
echo $home[1] . '<br>';

如您所见,我正在使用多个通配符,“ team =“需要一个通配符,而“ league =”需要另一个通配符,所有数据具有不同的团队和联赛。我想要的数据是“狼”,它在标签之前。我不确定上面的代码有什么问题,因为它没有显示任何数据。有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

您没有在模式中转义特殊字符。记录下来,使用dom解析器可以取得更好的长期成功,例如DomDocument以及Xpath。

这应该可以解决您的问题。

/<TD class=cellres align=left><a href=results\.php\?team=[^>]*&league=[^>]*>(.*?)<\/a><\/TD>/