Используя следующий код, я получаю теги «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