Anicky of Micropole Lyon Pole web
3/29/2016 - 8:17 AM

Ajoute un tag google analytics aux liens d'un contenu lors de l'envoi d'un mail

Ajoute un tag google analytics aux liens d'un contenu lors de l'envoi d'un mail

/**
 * Ajoute un tag google analytics aux liens d'un contenu lors de l'envoi d'un mail
 * @param string $contenu Le contenu HTML à traiter
 * @param string $tag Le tag à ajouter aux liens (une chaine de caractères)
 * @return string Le contenu HTML modifié avec les tags pour les liens
 */
function utils_mail_liens_google_analytics($contenu, $tag = NULL) {
    if ($tag) {
        global $base_url;
        $doc = new DOMDocument();
        $doc->loadHTML($contenu);
        /* Traitement des liens */
        $liens = $doc->getElementsByTagName('a');
        foreach ($liens as $lien) {
            $url = $lien->getAttribute('href');
            $url_parts = parse_url($url);
            $url_host = $url_parts["scheme"] . "://" . $url_parts["host"];
            $url_query_symbol = "?";
            if (isset($url_parts['query'])) {
                $url_query_symbol = "&";
            }
            if ($url_host === $base_url) {
                $lien->setAttribute('href', $url . $url_query_symbol . $tag);
            }
        }
        /* Le DOMDocument ajoute le doctype, des balises <head>...Il faut donc
         * les supprimer, car on renvoie ici seulement un morceau de page HTML */
        $text = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array(
            '<html>',
            '</html>',
            '<body>',
            '</body>'
        ), array('', '', '', ''), $doc->saveHTML()));
    } else {
        $text = $contenu;
    }
    return $text;
}