CE BLOG N'EST PLUS MIS A JOUR !
POUR DES INFORMATIONS RECENTES VEUILLEZ VOUS RENDRE ICI
Bienvenue sur le blog d'un développeur web : Actualités du monde informatique et scientifique, morceaux de programmations et diverses informations intéréssantes.

PHP : Recuperer les balises images d'un document (une page) HTML

Posté par : Neg le : 2012-01-31 22:07:12



Comment faire pour extraire les images utilisés dans un document HTML ? On peut vouloir faire ça pour plusieurs raisons, afficher l’aperçu d'une page web via la première image que l'on trouve dedans par exemple.

Pour cela, quelque fonctions PHP et l'utilisation d'une expression régulière (qui n'est pas de moi dans le code qui suit) pour extraire le contenus "href" des balises image trouvés sont nécessaires.

Je propose ci-dessous un code commenté permettant de le faire, il fonctionne correctement pour une utilisation générale, pour les cas spéciaux je vous laisse le perfectionner.

Le code est exactement celui de cette page de démonstration qui affiche le chemin de l'image (tel que récupéré dans le "href" des balise images) ainsi que l'image traitées. L'url de la page sur laquelle on veut travailler et à passé via un formulaire simple.


<?php
if (isset($_GET["url"])) {
    //on veut recuperer le chemin, et la page
    //on sépare donc les parties delimité par des /
    $chemin_ex = explode("/", $_GET["url"]);
    //on recupere le nombre de parties séparés
    $nb = count($chemin_ex);
    //si nb<=3 il n'yavait pas de séparateur / autre que dans http://
    if ($nb <= 3) {
        //le chemin est donc l'url complète.
        $chemin = $_GET["url"];
        $page = '';
    } else {
        //le chemin correspond à l'url complete moins /dernier element, la page au dernier element
        $page = $chemin_ex[$nb - 1];
        $chemin_ex[$nb - 1] = '';
        $chemin = implode("/", $chemin_ex);
    }
    //on récupère le html de la page que l'on veut avec file_get_contents()
    $html = file_get_contents($chemin . $page);
    //l'expression régulière permettant de trouver les balise images
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/Ui', $html, $matches);
    //pour chacuns des element trouvés
    for ($i = 0; $i < $output; $i++) {
        //on affiche le contenus de la balise src.
        echo $matches[1][$i] . '';
        //et on affiche l'image correspondante.
        //si ca commence pat http on affiche directement
        if (substr($matches[1][$i], 0, 7) == 'http://' || substr($matches[1][$i], 0, 8) == 'https://') {
            echo '<img src="' . $matches[1][$i] . '">';
        } else {
            //si l'image commence par / on doit supprimer le premier repertoire du chemin
            if (substr($matches[1][$i], 0, 1) == '/') {
                $image_tab = explode('/', $matches[1][$i]);
                $image_tab[0]='';
                $image_tab[1]='';
                $image=implode("/", $image_tab);
            } else {
                //sinon on la garde telle quelle et on rajoute le chemin general du site recherché
                $image=$matches[1][$i];
            }
            echo '<img src="' . $chemin . $image . '">';
        }
    }
} else {
    //par defaut remplir le formulaire avec l'url du blog
    $_GET["url"] = 'http://www.chezneg.fr/leblog/chezneg-leblog.php';
}
?>

<form method="get">
    <label>URL dont je veux afficher les images : </label><input type="text" name="url" value="<?php echo $_GET["url"] ?>"/>
    <input type="submit" value="OK" />
</form>
 

lien direct : http://numa-bord.com/old/leblog/chezneg-leblog.php?id_art=261&titre=PHP-:-Recuperer-les-balises-images-d'un-document-(une-page)-HTML
tags : Informatique (68), php (21), image (3), code (1),


J'aime, 9 personnes aiment çaCommentaire(s)(0)


Les derniers articles :
Les derniers articles de mon nouveau blog développeur
Nouvelle version de mon portfolio
Ouverture du site profitvacances.com
Utiliser la géolocalisation et styler une carte google map
Faire un slider simplement avec jQuery
Système de pagination en PHP sur une requête Mysql
Trouver les éléments à proximité sous MySql via leurs longitude et latitude
Stockage de données dans le cloud (SugarSync, DropBox, SkyDrive, BitCasa)
PHP : Recuperer les balises images d'un document (une page) HTML
PHP : faire un lecteur RSS grâce à simplexml_load_file

propulsé par Neg