我正在尝试使用正则表达式获取(和)标记之间的所有内容。我是新手,但我尝试了以下
$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”等的建议。
非常感谢任何帮助
答案 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);