正则表达式 - 找到标签之间的所有内容

时间:2013-09-25 08:31:41

标签: php regex

我正在尝试使用正则表达式获取(和)标记之间的所有内容。我是新手,但我尝试了以下

$html = file_get_contents($inputUrl);
preg_match_all('<td>([^"]*)</td>/', $html, $result);

foreach ($result as $val) {
    print $val."<br>";
}

我认为我的正则表达式的语法是错误的。我收到以下错误:

  

警告:preg_match_all()[function.preg-match-all]:未知修饰符   '('在C:...... \ tester.php第5行

     

警告:在C:... \ tester.php中为foreach()提供的参数无效   第7行

顺便说一下,我需要使用正则表达式完成这项任务!所以我不需要任何关于使用“解析XML”等的建议。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:3)

使用以下工作代码:

$mpmatch = "!<td>(.*?)</td>!is";
$str = "<td>sdfdfdfdsfds</td><td>333333333</td>";
preg_match_all($mpmatch, $str, $result);
foreach ($result as $val) {
    echo "<pre>";
    print_r($val);
}

希望这会对你有所帮助。

答案 1 :(得分:1)

您错过了第一个分隔符,您需要转义/或使用不同的分隔符

   preg_match_all('/<td>([^"]*)<\/td>/', $html, $result);
                   ^----

或者:

   preg_match_all('#<td>([^"]*)</td>#', $html, $result);

另外,你需要使用贪婪的比赛:

   preg_match_all('#<td>(.*?)</td>#s', $html, $result);