DBから返されるいくつかの画像にid属性を設定しようとしています
id 属性は、ユーザーがクリックした画像にのみ適用されます。
私の問題は、画像が重複していて、違いを区別するのが難しいことです。
クリックした画像src
を DB に保存して、どの画像に id 属性が必要かを識別します。
ユーザーが画像をクリックすると、IDが自動的に生成されます。
私のhtmlは
<div>
<img src='test1.jpg'/>
<img src='test1.jpg'/>
<img src='test1.jpg'/>
<img src='test2.jpg'/>
<img src='test3.jpg'/>
</div>
PHPで画像をレンダリングする
$html is the string that are returning from DB. it has all kind of html tags.
$doc = new DOMDocument();
@$doc->loadHTML($html);
$imageTags = $doc->getElementsByTagName('img');
$imgSource is the array of images that are supposed to have id attribute
$imgID is the array of ids for the images that were clicked
$source is the current image taht are being checked
foreach($imageTags as $tag) {
$source=$tag->getAttribute('src');
if(in_array($source, $imgSource)){
$ids=array_keys($imgSource,$source);
foreach($ids as $id){
$tag->setAttribute('id',$imgID[$id]);
$htmlString=$doc->saveHTML();
}
}
}
test1
上記の私のコードは、ユーザーがクリックしてtest2
画像を表示すると、以下のような html を生成します
<div>
<img id='123' src='test1.jpg'/>
<img id='123' src='test1.jpg'/>
<img id='123' src='test1.jpg'/>
<img id='456' src='test2.jpg'/>
<img src='test3.jpg'/>
</div>
id
123 はすべてtest1.jpg
に適用され、それは私が望むものではありません。画像の位置インデックスを見つけることで、この問題を回避しようとしました。したがって、ユーザーが 2 番目をクリックするtest1.jpg
と、インデックスは2 になります。ユーザーが 3 番目をクリックするtest1.jpg
と、インデックスは 3 になります。
ただし、それを私のphpコードに適用する方法がわかりません。その時点ではphpのコードしか変更できません。誰でもそれについて私を助けることができますか? 本当にありがとう!