我正在尝试将id属性设置为从DB
返回的一些图像id属性仅适用于用户点击的图片。
我的问题是我有重复的图像,很难区分不同的图像。
我将点击的图片src
存储到数据库中,以确定哪个图片应具有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
图片
<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
,这不是我想要的。
我试图通过查找图像位置索引来避免这个问题。
因此,如果用户单击第二个test1.jpg
,则索引将为2。
如果用户clciks第三个test1.jpg
,索引将为3。
但是,我不知道如何将其应用于我的PHP代码。我当时只能在php中更改代码。任何人都可以帮我吗?非常感谢!
答案 0 :(得分:1)
未经测试,但这是个主意:
$counter = array();
foreach($imageTags as $tag) {
$source=$tag->getAttribute('src');
if(in_array($source, $imgSource)){
$ids=array_keys($imgSource,$source);
foreach($ids as $id){
$counter[$imgID[$id]] = isset($counter[$imgID[$id]]) $counter[$imgID[$id]] + 1 : 0;
$tag->setAttribute('id',$imgID[$id] . '-' . $counter[$imgID[$id]]);
$htmlString=$doc->saveHTML();
}
}
你会得到像这样的ID:
<div>
<img id='123.0' src='test1.jpg'/>
<img id='123-1' src='test1.jpg'/>
<img id='123-2' src='test1.jpg'/>
<img id='456-0' src='test2.jpg'/>
</div>