В моей новой теме Wordpress я собираюсь использовать библиотеку lazyload, которая требует от меня использовать атрибут data-src
вместо src
. Поскольку я хочу сохранить старый контент как есть, я бы хотел заменить атрибуты с помощью функции Wordpress. Каким будет шаблон замены, который игнорирует порядок атрибутов и ограничивается img
и iframe
тегами?Заменить имя атрибута внутри определенных тегов
-1
A
ответ
1
Используйте синтаксический анализатор, это безопаснее, чем использование регулярных выражений на html.
$doc = new DOMDocument(1.0, 'utf-8');
$doc->loadHTML("html string........"); //replace with your html string
$iframes = $doc->getElementsByTagName("iframe");
$imgs = $doc->getElementsByTagName("img");
foreach($iframes as $iframe)
{
$iframe->setAttribute("data-src", $iframe->getAttribute("src"));
$iframe->removeAttribute("src"); // optional, delete if not wanted.
}
foreach($imgs as $img)
{
$img->setAttribute("data-src", $img->getAttribute("src"));
$img->removeAttribute("src"); // optional, delete if not wanted.
}
$editedHTML = $doc.saveHTML();
можно использовать jquery перед ленивой загрузкой? – Buck3y3
Я бы предпочел использовать функцию Wordpress для замены атрибутов, поэтому я искал PHP-решение. – idleberg
О, тогда, возможно, отметим тег или скажем Wordpress, поскольку никто не имел бы никакого представления, что это имеет какое-либо отношение к wordpress. – Buck3y3