HTML DOM
Cette librairie PHP est un outil permettant la manipulation d'un fichier HTML. Elle est basé sur PHP DOM.
Vous devez télécharger, décompresser et déposer la librairie dans le répertoire /application/libraries/. Ensuite, vous pouvez la charger comme toute autre librairie CI :
$this->load->library("html_dom");
Une fois chargé, vous pouvez accéder à l'objet de cette façon : $this->html_dom
Méthodes
Les méthodes suivantes sont disponible.
$this->html_dom->loadHTML($string);
Charger un objet DOM à partir d'une chaine de caractères.
$this->html_dom->loadHTMLFile($file_path);
Charger un objet DOM à partir d'un fichier.
$this->html_dom->save($file_path(opt));
Permet de retourner le document HTML à l'écran ou dans un fichier si on spécifie l'emplacement et le nom du fichier.
$this->html_dom->find(selecteur, index(opt));
Permet de trouver un ou plusieurs éléments qui correspondent au sélecteur spécifié. Voici des exemples :
$arrDomElements = $this->html_dom->find("p"); // tableau de tout les éléments "P"
$domElement = $this->html_dom->find("p", 0); // seulement le premier élément "P"
$arrDomElements = $this->html_dom->find("div.promo"); // tout les éléments "DIV" avec l'attribut class="promo"
$domElement = $this->html_dom->find("#login", 0); // élément avec l'attribut id="login"
Méthodes sur un élément DOM
$domElement->getInnerText();
$domElement->getOuterText();
$domElement->getAttr($nomAttribut);
$domElement->setInnerText($valeur);
$domElement->setOuterText($valeur);
$domElement->setAttr($nomAttribut, $valeur);
$domElement->first_child();
$domElement->last_child();
$domElement->previous_sibling();
$domElement->next_sibling();
$domElement->children();
$domElement->siblings();
$domElement->parent();
$domElement->find($selecteur, $index(opt));
$domElement->remove();
$domElement->remove_childs();
Raccourci
Il est possible d'accéder à n'importe quel attribut d'un élément de cette façon :$class = $this->html_dom->find('#unique_id',0)->class; //Obtenir l'attribut class d'un élément
$this->html_dom->find('#unique_id',0)->class = "new_class"; //Assigner une valeur pour l'attribut class d'un élément
$tag_name = $this->html_dom->find('#unique_id',0)->tag; //Obtenir le nom de la balise de l'élément
$content = $this->html_dom->find('p',1)->innertext; //Obtenir le contenu du 2è paragraphe
$this->html_dom->find('input#name',0)->value = "My name"; //Assigner une valeur pour l'attribut value de l'élément
Exemples
$title = $this->html_dom->find('title',0)->innertext; //Titre de la page
$new_title = "New title";
$this->html_dom->find('title',0)->innertext = $new_title; //Nouveau titre $i=0;
foreach($this->html_dom->find('div.promo') as $promo)
{
$promo->class = "special"; //Remplacer la valeur de l'attribut class "promo" par "special"
$promo->id = "promo_".$i; //Assigner un identifiant unique pour chaque élément
$i++;
}