PHP中使用preg_replace()函数出现无结束分隔符报错的问题咨询
关于preg_replace中"No ending delimiter"错误的解答
嘿,我来帮你搞清楚这个问题!
首先,"No ending delimiter"的意思是正则表达式缺少结束定界符。PHP里的PCRE系列正则函数(比如preg_replace)有个硬性要求:正则表达式必须用一对「定界符」包裹起来,常见的定界符有斜杠/、哈希符号#、波浪线~等等。这么做的目的是让PHP能明确区分正则表达式本身,以及后面可能添加的修饰符(比如忽略大小写的i、全局匹配的g这类)。
看你写的代码:
$d [] = preg_Replace("^0", "", $a);
这里的"^0"没有用定界符包裹,PHP会把开头的^误认为是你指定的定界符,但找遍整个字符串都找不到对应的结束^,于是就抛出了这个错误。
你遗漏的关键内容就是给正则表达式添加一对匹配的定界符。比如用最常用的斜杠来包裹,修正后的代码应该是这样:
$d[] = preg_replace("/^0/", "", $a);
另外提一句,PHP函数名不区分大小写,但规范起见建议写成小写的preg_replace哦。
如果你的正则表达式里本身包含斜杠(比如要匹配URL里的/),那可以换用其他定界符避免冲突,比如:
$d[] = preg_replace("#^0#", "", $a);
内容的提问来源于stack exchange,提问作者Dixon Chaudhary
相关产品推荐
相关产品推荐

