Use DOMDocument's loadHTML along with DOMXPath's query to find script tags.

Once found, it will add the src to the dns prefetch list.

Paramètres

string $html: HTML fragments.

1 call to advagg_mod_xpath_script_external_dns()
advagg_mod_js_inline_processor dans advagg_mod/advagg_mod.module
Given html, do some processing on the script tags included inside it.

Fichier

advagg_mod/advagg_mod.module, line 2835

Code

function advagg_mod_xpath_script_external_dns($html) {
    // Do not throw errors when parsing the html.
    libxml_use_internal_errors(TRUE);
    $dom = new DOMDocument();
    // Load html with full tags all around.
    $dom->loadHTML('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>' . $html . '</body></html>');
    $xpath = new DOMXPath($dom);
    // Get all script tags that
    // are not inside of a textarea
    // have a src attribute.
    $nodes = $xpath->query("//script[@src][not(ancestor::textarea)]");
    // Add the src attribute to dns-prefetch.
    foreach ($nodes as $node) {
        advagg_add_dns_prefetch($node->attributes
            ->getNamedItem('src')->nodeValue);
    }
    // Clear any errors.
    libxml_clear_errors();
}