我的图片存在问题。
我尝试在用户点击图片时添加图片ID,ID将保存到DB。
当页面重新加载时,具有id属性的图像将在img标记中显示id。
我识别具有id属性的图像的方式基于图像src。 但是,我发现有很多重复的图像,我的代码会添加一个id属性 所有重复的图像。
我希望只将id属性添加到用户点击的图片中。
我的代码
this.id
是图像的新id属性,它是从DB生成的。
//click image codes....
//assign the id to the clicked image (not all duplicated images)
this.img.attr('id',this.id);
页面重新加载时...
$doc = new DOMDocument();
$doc->loadHTML($myHtml);
$imageTags = $doc->getElementsByTagName('img');
//get the images that has id attribute from DB
$imgSource=$this->imgSource; //imgSource is an array
$imgID=$this->imgID; //imgID is an array
//search the htmlstring and add the id attribute to the images
foreach($imageTags as $tag) {
$source=$tag->getAttribute('src');
//if the html contains the image that has id attribute..
if(in_array($source, $imgSource)){
$ids=array_keys($imgSource,$source);
foreach($ids as $id){
$tag->setAttribute('id',$imgID[$id]);
$myHtml=$doc->saveHTML();
}
}
}
}
上面的代码会将id分配给ID中存储了id的图像。但是,它也会 将id分配给所有重复的图像。我需要区分那些重复的图像,我只能在我的情况下在php中进行。这个问题让我抓狂!如果有人能帮助我,我真的很感激。非常感谢。
答案 0 :(得分:1)
如果问题是要区分重复项,那么合适的部分是避免它们是更改将ID添加到重复图像的代码,不是吗?
我不完全理解您发布的PHP代码如何与ID一起使用,但我认为$this->imgSource
和$this->imgID
是这样的:
$this->imgSource = array(
[0] => 'src/image/a',
[1] => 'src/image/b',
[2] => 'src/image/c',
[3] => 'src/image/a'
);
$this->imgID = array(
[0] => 111,
[1] => 222,
[2] => 333,
[3] => 444
);
因此当$source
为'src/image/a'
时,它会执行以下操作:
$tag->setAttribute('id', 111);
$tag->setAttribute('id', 444);
如果这是你想要避免的,我建议删除id值以防止再次使用它。
$ids = array_keys($imgSource, $source);
foreach($ids as $id) {
if(isset($imgID[$id])) {
$tag->setAttribute('id', $imgID[$id]);
$myHtml = $doc->saveHTML();
unset($imgID[$id]);
break;
}
}