Php 预更换、str更换和substr更换在特殊条件下不工作

Php 预更换、str更换和substr更换在特殊条件下不工作,php,regex,preg-replace,preg-match-all,Php,Regex,Preg Replace,Preg Match All,我有以下代码: 此代码查找字符串中的所有html标记,并将它们替换为[[0]]、[[1]]、[[2]]等等(至少这是有意的,但不起作用) $str=“这里有些文字,哈哈哈”; preg_match_all(“|]+>(.*)+>|U“,$str,$out,preg_OFFSET_CAPTURE); $count=0; foreach($out[0]作为$result){ $temp=preg_quote($result[0],'/'); $temp=“/”$temp./”; preg_repla

我有以下代码: 此代码查找字符串中的所有html标记,并将它们替换为[[0]]、[[1]]、[[2]]等等(至少这是有意的,但不起作用)

$str=“这里有些文字,哈哈哈”;
preg_match_all(“|]+>(.*)+>|U“,$str,$out,preg_OFFSET_CAPTURE);
$count=0;
foreach($out[0]作为$result){
$temp=preg_quote($result[0],'/');
$temp=“/”$temp./”;
preg_replace($temp,[[“$count.”]],$str,1);
$count++;
}
var_dump($str);
此代码查找字符串中的所有标记,并用[[0]]、[[1]]和[[2]]等替换它们。我使用了带有preg\u OFFSET\u捕获的
preg\u match\u all
preg\u match\u all
的输出与预期一致。但是,
preg\u replace
substr\u replace
str\u replace
在用
[[$count]]]
替换标记时不起作用。 我尝试了所有三种字符串替换方法,但都不起作用。请给我指一下正确的方向。 php.ini中的某些内容会导致这种情况吗?
提前谢谢。

问题可能在这一行

foreach($out[0] as $result) {
换成这个

foreach($out as $result) {

因为我认为您正在访问一个不存在的索引

preg\u replace
不会替代
$str
。再次将其分配给字符串:

$str = preg_replace($temp, "[[".$count."]]", $str);
另外,我不确定你到底想要什么,但我改变了一些事情,这似乎是你想要做的。我稍微修改了一下正则表达式,尤其是
(.*)
部分改为
([^]+)

$str = preg_replace($temp, "[[".$count."]]", $str);