Как передать данные из DOMDocument в regexp?

Используя следующий код, я получаю теги «img» из некоторого html и проверяю их, если они покрыты тегами «a». Позже, если текущий тег «img» не является частью «a» (гиперссылки), который я хочу сделать, включите этот тег img в тег «a», добавляя гиперссылки, начинающиеся с конца тега плюс установка цели. Для этого я хочу, чтобы весь HTML-код «img» работал с html.

Вопрос в том, как я могу передать теги html «img» в regexp. Мне нужна переменная php в regexp для работы с местом, отмеченным символом ??? знаки.

$doc = new DOMDocument(); $doc->loadHTML($article_header); $imgs = $doc->getElementsByTagName('img'); foreach ($imgs as $img) { if ($img->parentNode->tagName != "a") { preg_match_all("|<img(.*)\/>|U", ??? , $matches, PREG_PATTERN_ORDER); } } 

Вы не хотите использовать регулярное выражение для этого. У вас уже есть DOM, поэтому используйте его:

 foreach ($imgs as $img) { $container = $img->parentNode; if ($container->tagName != "a") { $a = $doc->createElement("a"); $a->appendChild( $img->cloneNode(true) ); $container->replaceChild($a, $img); } } 

см. документацию по

  • DOMDocument::createElement
  • DOMNode::appendChild
  • DOMNode::cloneNode
  • DOMNode::replaceChild