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

时间:2010-09-08 08:43:01

标签: php preg-match

我正在尝试执行这个正则表达式:

<?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 个答案:

答案 0 :(得分:4)

我猜在NULL character上的PHP扼流圈表示C中字符串的结尾。

尝试使用单引号,以便\x00由PCRE引擎解释,而不是由PHP解释:

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

这似乎是一个已知的错误(请参阅Problems with strings containing \x00)。

答案 1 :(得分:3)

Gumbo一样,preg_match不是二元安全的。

改为使用:

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

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

答案 2 :(得分:1)

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