我有以下代码:
这段代码找到字符串中的所有 html 标签,并将它们替换为 [[0]]、[[1]]、[[2]] 等。(至少这是有意的,但不起作用);
$str = "some text <a href='/review/'>review</a> here <a class='abc' href='/about/'>link2</a> hahaha";
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",$str, $out, PREG_OFFSET_CAPTURE);
$count = 0;
foreach($out[0] as $result) {
$temp=preg_quote($result[0],'/');
$temp ="/".$temp."/";
preg_replace($temp, "[[".$count."]]", $str,1);
$count++;
}
var_dump($str);
此代码查找字符串中的所有标签,并将其替换为 [[0]]、[[1]] 和 [[2]] 等。我用过preg_match_all
与 PREG_OFFSET_CAPTURE。
的输出preg_match_all
正如预期的那样。然而,preg_replace
, substr_replace
, and str_replace
将标签替换为时不起作用[[$count]]
。
我已经尝试了所有三种字符串替换方法,但都不起作用。请指出我正确的方向。
php.ini 中的某些内容会导致此问题吗?
提前致谢。
preg_replace
不能替代$str
。再次将其分配给字符串:
$str = preg_replace($temp, "[[".$count."]]", $str);
另外,我不确定你到底想要什么,但是我改变了一些东西code http://viper-7.com/w19dS9,这似乎就是您想要做的。我稍微改变了正则表达式,尤其是(.*?)
部分到([^<>]+)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)