代码之家  ›  专栏  ›  技术社区  ›  peirix

php regex-找不到错误

  •  0
  • peirix  · 技术社区  · 14 年前

    只有一个简单、具体的问题:
    我有绳子 {var1}12345{var2} ,我想使用变量名。

    if (preg_match("/{([a-zA-Z0-9]*)}/g", $url, $matches)) {
        print_r($matches);
    }
    

    如果我移除全局标志,它会起作用,但是我只得到第一个变量,如预期的那样。它为什么不使用全球旗帜?当我用 Regex Tester

    3 回复  |  直到 14 年前
        1
  •  3
  •   prostynick    14 年前

    PHP: preg_match :

    preg_match()返回模式匹配的次数。这将是0次(不匹配)或1次,因为 preg_match()将在第一次匹配后停止搜索 . 相反,preg_match_all()将一直持续到主题结束。如果发生错误,preg_match()将返回false。

        2
  •  2
  •   nuqqsa    14 年前

    使用 preg_match_all 要获取多个匹配项:

    if (preg_match_all("/{([a-zA-Z0-9]*)}/", $url, $matches)) {
        print_r($matches[1]);
    }
    
        3
  •  1
  •   Ondrej Slinták    14 年前

    这应该可以做到这一点(如果您需要格式中的变量 {No.} ):

    $url = "{var1}12345{var2}";
    
    if (preg_match_all("/{[a-zA-Z0-9]*}/", $url, $matches)) {
        print_r($matches);
    }