1

我正在尝试加载一个远程网站并获取括号内的所有数字。但最终发生的是它只匹配最后一个值。

我的正则表达式错了吗?我使用了正确的标志吗?

我在第二个 $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";

    }

谢谢。

4

2 回答 2

5

怎么样:

preg_match_all("/\((\d+)\)/", $html, $matches, PREG_PATTERN_ORDER); 
print_r($matches[1]);
于 2012-07-21T15:22:21.820 回答
0

我看到两个可能的问题。

首先,您从 start(^) 到 end($) 进行匹配,它只会匹配行首和行尾之间完全匹配的内容。

其次,您很可能希望使用 /gs 正则表达式参数将其全部输入。

preg_match_all("/\b(\d+)\b/gs" ...
于 2012-07-21T15:22:35.597 回答