我正在尝试加载远程网站并获取括号内的所有数字。但最终发生的事情是它只匹配最后一个值。
我的正则表达式错了吗?我使用正确的旗帜吗?
我在第二个$ html变量中添加了它应匹配的示例。
//$html = file_get_contents("http://example.com/test.html");
$html = "(1234) (12) (1) \r\n (1346326)";
preg_match_all("^[(\d)]+$^", $html, $matches, PREG_PATTERN_ORDER);
print_r($matches);
echo "<br>";
foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
}
感谢。
答案 0 :(得分:4)
怎么样:
preg_match_all("/\((\d+)\)/", $html, $matches, PREG_PATTERN_ORDER);
print_r($matches[1]);
答案 1 :(得分:0)
我看到两个可能的问题。
首先,你从开始(^)到结束($)进行匹配,它只匹配行开头和行结束之间的匹配。
其次,你很可能想要使用/ gs正则表达式参数来全押它。
preg_match_all("/\b(\d+)\b/gs" ...