Récupérer le contenu d’un tag avec une expression régulière

Les expressions régulières sont un outil puissant pour rechercher des éléments précis dans un code compliqué. Ici un script simple qui permet de rechercher des tags particuliers, et de les lister.

Précédent | 8/14 | Suivant

Ce script récupère le contenu du body d’une autre page, et l’affiche dans la page.

<?php
// cette fonction técupère le contenu d'un document distant
function geturl($laurl){
        $data=null;
        if($http= fopen($laurl,"r")){
                while(!feof($http)){
                $data .=fgets($http,1024);       
                }
                fclose($http);
        }
        return($data);
}
// cette fonction récupère le contenu des tags sélectionnés
function get_tag($file,$tag="body"){
   preg_match_all("/(<".$tag.".*>)(\w.*)(<\/".$tag.">)/ismU",$file,$patterns);
       return $patterns;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Je pompe cette page</title>
</head>
<?php
// recuperer le contenu de cette page
$data=geturl("http://codedrops.net/");
// récupère le contenu du tag, tag compris
$extrait=get_tag($data,"body");
// ce qui revient est un tableau, on liste tous les résultats avec foreach
foreach($extrait[0] as $contenu){
echo $contenu;       
}
?>
</html>

La fonction preg_match_all permet de rechercher dans une chaine de caractères un "pattern", une structure de texte, et met le résultat dans un tableau, dans un ordre particulier si on le lui demande. Après avoir trouvé un premier résultat, la recherche continue jusqu’à la fin de la chaîne.
Ici, le pattern est un tag ouvrant et fermant, qui est fourni par la fonction.
preg_match_all fournit un tableau avec les éléments qui correspondent à la recherche.

Construire une expression régulière requiert parfois de l’acharnement, pas mal d’aide en ligne se trouve via moteur de recherche. Ce script peut servir de point de départ.