Изменение некоторых данных внутри параметра src изображения и добавление гиперссылок на изображение PHP DOM - PullRequest
0 голосов
/ 16 августа 2011

У меня есть текст с изображениями внутри. Например, вот так

texttext<img src="2011-08-15/4/img/123.JPG" alt="" width="528" height="394.3458646616541" >texttext

Теперь мне нужен код, который ищет изображение, находит его, проверяет, есть ли у него класс. Если нет, то я хочу изменить это сорусе из этого

2011-08-15/4/img/123.JPG

к этому

2011-08-15/4/mini/123.JPG

А затем добавьте гиперссылку на изображение, а также удалите параметры ширины и высоты из тега img, поэтому конечный результат должен быть таким:

texttext<a href="2011-08-15/4/img/123.JPG" class="colorbox cboxElement" style="margin: 0 5px 5px 0"><img src="2011-08-15/4/mini/123.JPG" alt=""></a>texttext

Вот код, который ищет, и все, что мне нужно, это код, который выполняет все манипуляции.

$doc = new DOMDocument();
$doc->loadHTML($article_header);

$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
    if(!$img->getAttribute('class')){
        // ......Here must be some code that does all the work......
        $article_header = $doc->saveXml();
    }
}

Есть ли способ решить эту проблему? Если вы не можете написать весь код, может быть, вы поможете мне с небольшими примерами?

  1. Как что-то изменить в параметре src и сохранить.
  2. Как удалить параметры ширины и высоты из тега img.
  3. Как добавить тег гиперссылки к тегу im.

Мне нужно это 3 техники

1 Ответ

1 голос
/ 16 августа 2011
$doc = new DOMDocument();
$doc->loadHTML($html);

$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
    if(!$img->getAttribute('class')){
        $src = $img->getAttribute('src');
        $newSRC = str_replace('/img/', '/mini/', $src);
        $img->setAttribute('src', $newSRC);

        $img->setAttribute('width', '500'); // set new attribute value
        $img->setAttribute('height', '500'); // set new attribute value

        $img->setAttribute('title', 'New title'); // set new attribute and value

        $img->removeAttribute('width'); // remove attribute
        $img->removeAttribute('height'); // remove attribute

        $href = $doc->createElement('a', '');
        $addhref = $img->parentNode->insertBefore($href, $img);
        $href->setAttribute('href', 'http://www.google.com');

        $img->parentNode->removeChild($img);
        $href->appendChild($img);

    }
}

echo $doc->saveXml();
  1. петли изображений
  2. получить изображения без класса
  3. изменить src, ширину, высоту, как вы хотите, удалить атрибуты ...
  4. добавитьa Элемент перед img Элемент
  5. добавьте href атрибут и все, что вы хотите
  6. удалите img Элемент без класса
  7. добавьте img к a Элемент
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...