代码之家  ›  专栏  ›  技术社区  ›  Silver Light

正则表达式错误:没有结束分隔符

  •  1
  • Silver Light  · 技术社区  · 14 年前

    <?php
        preg_match("/^([^\x00-\x1F]+?){0,1}/", 'test string');
    ?>
    

    但不断出现错误:

    Warning: preg_match() [function.preg-match]: No ending delimiter '/' found in /var/www/preg.php on line 6
    

    我很感激你在这个问题上的帮助。

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

    就像 Gumbo 说, preg_match 不是二进制安全的。

    改用:

    preg_match("/^([^\\x{00}-\\x{1F}]+?){0,1}/", 'test string'));
    

    这是在PCRE中指定Unicode代码点的正确方法。

        2
  •  4
  •   Gumbo    14 年前

    我想PHP会被 NULL character

    用单引号试一下,这样 \x00 由PCRE引擎而不是PHP解释:

    '/^([^\x00-\x1F]+?){0,1}/'
    

    似乎这是一个已知的bug(参见 Problems with strings containing \x00 ).

        3
  •  1
  •   einarmagnus    14 年前

    我不确定php,但问题是你需要避开反斜杠? "/^([^\\x00-\\x1F]+?){0,1}/"