用PHP中的Numbers替换另一个字符串中字符串的出现

时间:2017-07-04 23:55:51

标签: php

我有一个包含一些“img”标签的html字符串代码。我想搜索字符串并使用"<img "之类的内容更改每个"<img onclick=lightbox(XXXX)"个匹配项,因此第一个匹配项应该变为"<img onclick=lightbox(0)",然后第二个匹配项应变为"<img onclick=lightbox(1)",然后是第三个应该成为"<img onclick=lightbox(2)"等等,我怎样才能在PHP中实现这个目标?

3 个答案:

答案 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;
  ?>

这可以改善很多..