IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

preg_match pour extraire description meta [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut preg_match pour extraire description meta
    bonjour a tous

    j'essaye d'extraire le descriptif d'un page contenu dans la balise meta description. pour cela j'ai fais une fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    function RetrieveMetaDesc($path_file)
    {
     
        if(!file_exists($path_file))
        {
            //initialisation des variables
            $tableau = file($path_file);
            $out = array();
            $nblignes = sizeof($tableau)-1;
            if(!empty($tableau))
            {
                $trouv = 0;
                $i = 1;
                while($i <= $nblignes && $trouv == 0)
                {
     
     
                        $temp = $tableau[$i];
                        if (preg_match('`<meta name="description" content="([^"]+)">`i',$temp,$out))
                        {
     
                            $trouv = 1;
     
                        }
                        $i++;
                }
            }
            else
            {
                exit('fichier non trouvé.');
            }
            return $out;
        }
        else
        {
            return 0;
        }
     
    }
    tout se déroule comme prévu. la variable $temp prend bien "<meta name="description content="blabla...">" mais la regex me revoi rien dans $out.

    j'utilise komodo (je sais pas si c'est connu) et je me suis aidé du débugger intégré pour situer le probléme.

    si vous avez une solucion, merci de m'aider.

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Pour l'expression régulière, ça ne serait pas plutôt : content="([^\"]+)"[/CODE](anti-slash avant la double-côtes)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    merci

    non ça ne change rien, $out ne reçoit aucun résultat. et mon if ne s'execute jamais.

    j'ai un pe modifier la partie autour du if d'aileur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $temp = $tableau[$i];
                        $reg = preg_match('`<meta name="description" content="([^\"]+)">`i',$temp,$out);
                        if ($reg != 0)
                        {
     
                            $trouv = 1;
     
                        }
                        $i++;

  4. #4
    Membre expérimenté Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        if(!file_exists($path_file))
    à remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        if(file_exists($path_file))
    le ! est de trop.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    ben en fait, le ! me sert à rentrer dans le if. par ce que file_exsits$path_file) me retourne systématiquement false. alors que le fichier exist bel et bien, et j'arrive même à le récupérer dans $tableau avec la fonction file'). c'est peu-être parce que $path_file contien un url compléte ?

    [edit]j'ai trouvé comment faire. en fait, il faut tout simplement utiliser get_meta_tags() qui renvoi un tableau et récupérer la cas description

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tag =  get_meta_tags($path_file);
    $out = $tag['description'];
    [/edit]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cherche un script pour extraire toutes les URLs
    Par Athary dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 25/08/2006, 17h44
  2. Réponses: 9
    Dernier message: 09/05/2006, 10h52
  3. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 15h01
  4. Script pour extraire la meteo depuis un serveur XML.Probleme
    Par Zarma67 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/02/2006, 11h13
  5. Utiliser un parser pour extraire des formules
    Par EpOnYmE187 dans le forum C++
    Réponses: 2
    Dernier message: 15/03/2005, 23h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo