<?php
$a = <<<str
dkkddk
<img src="kkk" alt="kdkdkdkkd" />
fffffffffff
<img src="kkk" alt="kdkdkdkkd" />
fffffffffff
<img src="kkk" alt="kdkdkdkkd" />
fffffffffff
<img src="kkk" alt="kdkdkdkkd" />
fffffffffff
<img src="kkk" alt="kdkdkdkkd" />
fffffffffff
<img src="kkk" alt="kdkdkdkkd" />
fffffffffff
<da>
<ddd>
</dkddk>
ff
ddkkdkdk
str;
$as = array();
function re($s) {
global $as;
$c = count($as);
$as[] = $s;
return $c.'\n\n\n';
}
$b = preg_replace_callback(
"/<\/?\w+[^>]*>/"
,'re'
,$a
);
var_dump(
$b,$a
,$as
);
-------
像上面的代码执行后会出现这个提示.只有低的php版本才会出现问题.而我的最亲版本却不会,奇怪.
在低的版本上跟踪发现是因为 $as[] = $s;这句有问题.改成 $as[] = $s[0];后就正常了.
我怀疑是否是局部变量的问题导致:
直接使用值时,是复制,而给数组时是地址?