我有一个包含一些“img”标签的html字符串代码。我想搜索字符串并使用"<img "
之类的内容更改每个"<img onclick=lightbox(XXXX)"
个匹配项,因此第一个匹配项应该变为"<img onclick=lightbox(0)"
,然后第二个匹配项应变为"<img onclick=lightbox(1)"
,然后是第三个应该成为"<img onclick=lightbox(2)"
等等,我怎样才能在PHP中实现这个目标?
答案 0 :(得分:2)
将html解析为DOMObject并替换
function replace_img($html) {
$doc = new DOMDocument();
$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('img');
$i=0;
foreach ($tags as $tag) {
$tag->setAttribute('onclick', "lightbox($i)");
$i++;
}
return $doc->saveHTML();
}
答案 1 :(得分:2)
基于正则表达式的解决方案,它更优雅,应该更快:
<?php
$string = "<img /><img />";
$i = 0;
$newString = preg_replace_callback( '/<img /', function() use (&$i){
return '<img onclick="lightbox(' . ($i++) . ');" ';
},$string);
echo $newString;
答案 2 :(得分:-1)
下面。试试这个
<?php
$str = "this is xxxx is not equal xxxx, So what xxxx";
$t = explode('xxxx',$str);
$i=0;
$imStr=[];
foreach($t as $s){
$s=$s.$i;
$imStr[$i]=$s;
$i=$i+1;
}
$str = implode($imStr);
echo $str;
?>
这可以改善很多..