1

既存のイメージ タグを id 属性を持つ新しいイメージ タグに置き換えようとしています。

DBが次のようなhtmlstringを返しました

<div>
<p>random p</p>
<img src='a.jpb'/>
</div>
<span>random span</span>
<img src='b.jpb'/>

more...

たとえば、画像の「一部」を id 属性に置き換えたい:

交換する

<img src='a.jpb'/>

<img id='123' src='a.jpb'/>

ドムドキュメントを使用しています

$doc = new DOMDocument();

          $doc->loadHTML($html);

          $imageTags = $doc->getElementsByTagName('img');

          $imgSource=$this->DBimgSource;
          $id=$this->DBID;

          foreach($imageTags as $tag) {
              //getting all the images tags from $html string
              $source=$tag->getAttribute('src');

           if(!empty($imgSource) && !empty($source)){
             if(in_array($source, $imgSource)){

              $id=array_search($source,$imgSource);
              $imgID=$id;
              $tag->setAttribute('id',$imgID);
              $newImageTag=$doc->saveXML($tag);

              //I am not sure how to replace existing image tags within $html with the $newImageTag                

              }
            }
          }

これを行う方法はありますか?とにかく思いつきませんでした。助けてくれてありがとう!

4

1 に答える 1

2

これは私のために働きます:

$html = "<html><body><img src='foo.jpg'/></body></html>";
$doc = new DOMDocument();
$doc->loadHTML($html);
$img = $doc->getElementsByTagName('img')->item(0);
$img->setAttribute('id', 'newId');
$html = $doc->saveHTML();
echo $html;

出力は次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><img src="foo.jpg" id="newId"></body></html>
于 2013-02-08T20:19:02.900 に答える