我正在尝试执行这个正则表达式:
<?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
我无法理解它的来源。我有一个结束的分隔符...我试图将分隔符更改为其他符号,但它没有帮助。
感谢您对此问题的帮助。
答案 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}/"