我认为,我可能忽视了这里的内容,但我不敢肯定为什么发生这种奇怪的行为。
我知道这是一个非意见性的reg,但我的问题是为什么发生这种情况。
<?php
// < 15 "a" characters returns "aaaaaaaaaaaaaa {" (no matches)
$code = aaaaaaaaaaaaaa { ;
// 15 "a" characters returns NULL
$code = aaaaaaaaaaaaaaa { ;
$code = preg_replace( #(a+)+{# , b , $code);
var_dump($code);
?>
我确信,该表有一份<条码>缺失。 如果我改为<代码>#(a+)+s{#。 页: 1 但为什么我拿不到<条码>,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{“,15个“a”特性,而不是NUL
? 该手册指出,在出现错误时,NUL
即予退回,但PHP没有印刷(正在核对)。
EDIT:
我使用<代码>(a+)+的原因是,我试图将问题简化到基本层面。 我开始这样做:
我想抓住一系列非白色空间特征,然后是空地,然后是开张。
this is some text {
因此,我使用了reg:
#([^s{}]+s*)+{#msi
后者还使用双重+。 是否有更好的办法,为什么首先造成一个问题?
EDIT 2:
From the answers below, it appears that the double + causes a lot of backreferences and should be avoided. I have opted for this [^s{}][^{}]*+{
.