0

我对图像有疑问。

当用户单击图像时,我尝试添加图像 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 存储在 DB 中的图像。但是,它也会将 id 分配给所有重复的图像。我需要区分那些重复的图像,就我而言,我只能在 php 中做到这一点。这个问题把我逼疯了!如果有人可以帮助我,我将不胜感激。非常感谢。

4

1 回答 1

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;
    }
}
于 2013-02-12T00:21:11.163 回答