2

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

$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]: Unknown modifier '(' in C:...\tester.php on line 5

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

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

任何帮助将不胜感激

4

2 回答 2

4

使用以下工作代码:

$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);
}

希望这会帮助你。

于 2013-09-25T09:01:39.537 回答
2

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

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

或者:

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

此外,您需要使用贪婪匹配:

   preg_match_all('#<td>(.*?)</td>#s', $html, $result);
于 2013-09-25T08:33:14.950 回答