Récupérer le contenu des alt d'une page ???

DecibelMan
WRInaute discret
WRInaute discret
 
Messages: 145
Inscription: 10 Juil 2005

Récupérer le contenu des alt d'une page ???

Message le Lun Oct 17, 2005 16:29

Bonjour,je cherche un script php qui ecrit dans un tableau ou un fichier txt le contenu des alt="...." d'un fichier php ???
ça existe???
Merci.

spidetra
WRInaute passionné
WRInaute passionné
 
Messages: 1500
Inscription: 7 Juil 2003

Message le Lun Oct 17, 2005 19:59

Code: Tout sélectionner
<?php
// Le bout de code HTML à parser
// Il peut venir d'un fichier en local ou d'un GET sur Internet ou autre
// bad html string
$html = <<< HTML
<head>
<title>Test Tidy</title>
</head>
<body>
<H1>Get the alt atribute of an html page</H1>
<p class="bar">paragraphe</p>
<img src="" alt="image 1" />
<img src="" alt="image 2" />
<br/>
<div id="tidy" class="foo">
   <img src="" alt="image3" />
<div>
</body>
</html>
<html lang="fr">
HTML;
// Fin du bout de code HTML
// le HTML est faux => balise <html> en fin de fichier
// => réparé automatiquement par tidy


// Instance d'un nouvel objet tidy
$tidy = tidy_parse_string($html);

// tidy répare le code HTML
tidy_clean_repair( $tidy ) ;

// well formed html
// sortie HTML pour voir le code HTML réparé
echo $tidy ;

// Récupére la racine de l'arbre html : $tidy->root()
// getAlt Est une fct recursive qui permet de parcourir tout l'arbre
getAlt($tidy->root());

function getAlt($node) {

// Est-ce que le noeud courant a des fils ? 
if($node->hasChildren()) {
       // Pour chacun des fils du noeud courant
        foreach($node->child as $child) {
           
            // Traitment avec chacun des attributs ( là c peut-être un peu faux) => ici tu fait ce que tu veux.
             foreach ($child->attribute as $attribut ) {
              if ( isset( $child->attribute["alt"] ) ) {
                  echo $attribut . "<br />"  ;
              }           
           }
          // Appel récursif de la fonction
           getAlt($child);
       }
   }
}
?>


Il existe bien sûr des méthodes plus simple à base de regexp.
Je préfère des outils qui parsent le code HTML (tidy, par exemple), ils sont plus souple et plus puissant. Il faut adapter le code.

Il y a une fct spécifique pour les attributs :
http://fr2.php.net/manual/fr/function.t ... t-attr.php, elle a pas marché chez moi.
Dernière édition par spidetra le Mar Oct 18, 2005 8:20, édité 1 fois.

DecibelMan
WRInaute discret
WRInaute discret
 
Messages: 145
Inscription: 10 Juil 2005

Message le Mar Oct 18, 2005 1:37

Merci beaucoup pour l'info j'avais cherché sur le web et j'avais rien vu...
là je vais essayer de piger le code...plus les infos du site.
Un grand merci.. :wink:

spidetra
WRInaute passionné
WRInaute passionné
 
Messages: 1500
Inscription: 7 Juil 2003

Message le Mar Oct 18, 2005 8:20

je viens de te commenter le code source si ça peut t'aider.

DecibelMan
WRInaute discret
WRInaute discret
 
Messages: 145
Inscription: 10 Juil 2005

Message le Mar Oct 18, 2005 12:46

Merci,ce que je comprenais pas :
$html = <<< HTML ce que ça veux dire
<html lang="fr">
HTML;
j'avais jamais vu cette syntaxe...
Fonction récursive getAlt($tidy->root()) c'est un algo que je connaissais pas...
Je fais des tests pour voir le resultat.
il me marque erreur pour :
$tidy = tidy_parse_string($html);
peut-être c'est une fonction trop récente pour ma version php ?

spidetra
WRInaute passionné
WRInaute passionné
 
Messages: 1500
Inscription: 7 Juil 2003

Message le Mar Oct 18, 2005 13:11

DecibelMan a écrit:Merci,ce que je comprenais pas c'est pourquoi la balise html :
$html = <<< HTML ce que ça veux dire
<html lang="fr">
HTML;

heredoc syntax. ça te permet d'écrire rapidement dans une variable.
Il est évident que toi tu vas ouvrir un fichier, ou récupérer le contenu différemment.

DecibelMan a écrit:Fonction récursive getAlt($tidy->root()) c'est un algo que je connaissais pas..


La récursivité est un moyen de simplifier ( ou des fois de compliquer :D ) des algos.
Pour traiter un arbre HTML la récursivité est à ma connaisance un des moyens le plus simple.

DecibelMan a écrit:Je fais des tests pour voir le resultat.
il me marque erreur pour :
$tidy = tidy_parse_string($html);
peut-être c'est une fonction trop récente pour ma version php ?


http://fr2.php.net/manual/fr/ref.tidy.php
PHP > 4.3.x

par contre il faut que tidy soit installé sur ton serveur et que PHP soit compilé avec le support de tidy.

si ça ne marche pas il faut que tu passes par des regexp.
Là, ça fait trop longtemps que je n'ai pas pratiqué pour pouvoir t'aider. La regexp doit être assez simple quand même

DecibelMan
WRInaute discret
WRInaute discret
 
Messages: 145
Inscription: 10 Juil 2005

Message le Mar Oct 18, 2005 13:25

Oui sympa,
j'avais pensé aux expressions régulières au départ mais j'avais pas le bon début donc je cherchais une autre fonction.
j'ai regardé regexp et je crois avoir trouvé là une façon de faire...
C'est pas si facile je vais bosser...:)

le truc c'est que dans mes pages a scanner je vais faire un include et récupérer les valeurs dans un tableau que je vais afficher...ensuite....


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Website Optimizer

  • Calcul du taux de liens profonds
    Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité