2015-01-09 2 views
-1

В моей новой теме Wordpress я собираюсь использовать библиотеку lazyload, которая требует от меня использовать атрибут data-src вместо src. Поскольку я хочу сохранить старый контент как есть, я бы хотел заменить атрибуты с помощью функции Wordpress. Каким будет шаблон замены, который игнорирует порядок атрибутов и ограничивается img и iframe тегами?Заменить имя атрибута внутри определенных тегов

+0

можно использовать jquery перед ленивой загрузкой? – Buck3y3

+0

Я бы предпочел использовать функцию Wordpress для замены атрибутов, поэтому я искал PHP-решение. – idleberg

+0

О, тогда, возможно, отметим тег или скажем Wordpress, поскольку никто не имел бы никакого представления, что это имеет какое-либо отношение к wordpress. – Buck3y3

ответ

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();