PHP重复图像问题

时间:2013-02-13 21:59:24

标签: php

我正在尝试将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();

                  }
              }
}

如果用户点击test1test2图片

,我上面的代码会生成如下所示的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,这不是我想要的。 我试图通过查找图像位置索引来避免这个问题。 因此,如果用户单击第二个test1.jpg,则索引将为2。 如果用户clciks第三个test1.jpg,索引将为3。

但是,我不知道如何将其应用于我的PHP代码。我当时只能在php中更改代码。任何人都可以帮我吗?非常感谢!

1 个答案:

答案 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>