Intereting Posts
Контроль ASP.Net против производительности HTML-контроля Код Javascript, чтобы открыть страницу html в браузере Chrome? как бы я получил изображение в этом div с опрокидыванием, не получив оверлей? div коснуться левого и правого конца браузера Как проверить файл html с помощью C #? Библиотека Python для рендеринга HTML и javascript Запросы @media и обмен изображениями Как указать локальный файл в html с помощью файла: схема? Перетаскиваемый квадрат / прямоугольник, который привязывается к сетке в JQuery / Javascript Скрытие полосы прокрутки в div Таинственное дополнение / маржа появляется после изображения в строгом режиме Это лучший способ импортировать тело DOMDocument (HTML) в другое? Как проверить, действителен ли элемент DOM и / или атрибут? Предупреждение: mysql_query (): доступ запрещен для пользователя ‘admin’ @ ‘localhost’ (с использованием пароля: НЕТ) Возвращается ли блок setInterval для функции Javascript?

Как добавить rel = “lightbox” только к ссылкам, которые include изображение, а не остальные ссылки?

Допустим, что (в php) мы имеем переменную, которая имеет текст, ссылки и изображения:

pic 

и мы хотим добавить к каждому тегу href rel = “light”, как следует:

 pic 

Если имя переменной позволяет сказать $ mydata, то с помощью str_replace мы можем сделать следующее, чтобы решить нашу проблему:

 $mydata = str_replace('<img ', '<img rel="lightbox"', $mydata); 

До сих пор все в порядке, но как насчет остальной части ссылок href, которые не include фотографию:

например,

 link_no1 link_no2 

и т.д ? Для такого рода ссылок, которые не include изображение, но текст, то с нашим кодом str_replace также будет атрибут rel = “lightbox”, который не является правильным, и я не хочу:

 link_no1 

Итак, как мы можем применить rel = “lightbox” только к ссылкам, которые include некоторое изображение, и к тем ссылкам, которые не include какое-либо изображение, чтобы не устанавливать атрибут rel = “lightbox” ..!?

Это регулярное выражение решает проблему?

 $str = ''; $str = preg_replace('~]+>\s* 

Используя контрольную для проверки, если за следует

Если вы предпочитаете использовать регулярное выражение …

 $html = preg_replace('/(?< =]*>[^< ]* 

Хотя, я бы подумал об использовании DOM и XPath ...

 $doc = DOMDocument::loadHTML(' pic link_no1 link_no2  '); $xpath = new DOMXPath($doc); $links = $xpath->query('//a//img'); foreach($links as $link) { $link->parentNode->setAttribute('rel', 'lightbox'); } echo $doc->saveHTML();