Meta balise(détection automatique)

Résolu/Fermé
kaisserr Messages postés 52 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 16 août 2011 - 18 juil. 2009 à 22:45
kaisserr Messages postés 52 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 16 août 2011 - 1 août 2009 à 10:41
Bonsoir tout le monde,
alors voilà j'ai un formulaire qui doit détecter certaines information concernant un site web( titre , description ...) à partir d'url saisi par un internaute, je viens de le commencer mais je n'ai pas encore une idée de comment ca marche c truc,je sais juste que j'ai affaire aux meta balises , alors si quelqu'un à dejà vu ou entendu l'existence de c script ca me ferais bcp plaisir, merci d'avance

12 réponses

imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
19 juil. 2009 à 09:30
Quel langage tu utilise ?

En gros, le principe est simple :
- tu récupère le html de l'url concerné
- tu recherche à l'intérieur les terme que tu veux (avec des expression régulières par exemple)

0
kaisserr Messages postés 52 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 16 août 2011 3
19 juil. 2009 à 12:34
salut,
ben en fait j utilise le php, mais ce que je cherche c comment recupéré les données avant de chercher ce que je veux , par exemple comment trouver le titre ou la description de l url saisie par un internaute ...
0
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
19 juil. 2009 à 14:43
$url = $_REQUEST['url']; // récupère l'url donné par le client

$fichier = file_get_contents( $url ); // récupère le contenu html de la page en question

if( preg_match( '#<title>(.*?)</title>#i', $fichier, $out ) ) // recherche le contenu entre les balises title
     $titre = $out[1]; // stocke le contenu dans la variable $titre

echo $titre; // affiche le titre de la page dont l'url à été fournie
0
Bonjour, en fait j'aimerais savoir si ça marche avec des meta balise comme la description , parce qu à ma connaissance le titre n 'est pas une meta balise.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
19 juil. 2009 à 16:00
Tu peux rechercher ce que tu veux ... tant que c'est dans le code HTML !

Après à toi de définir ce que tu recherche et comment ...
0
kaisserr Messages postés 52 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 16 août 2011 3
20 juil. 2009 à 18:20
Bonjour,
ben finallement ce code ne marche pas , je sais pas ce quoi le problème.
Normalement le url je l'insere dans un (input) apres il faut placer un (isset)pour verifier
mais c'est marche pas du tout, sinon sans le (isset) il ne reconais pas (file_get_contents($url),
s'il vous plait si vous avez oublier quelque chose ou bien que vous connaissez une autre fonction qui fait la mm chose
ca me ferais plaisir de me le signaler
merci d'avance
0
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
20 juil. 2009 à 18:30
essaye juste ça :

<?php

echo htmlentities(file_get_contents('http://www.google.fr'));

?>


Ca affiche le contenu html de la page google (testé).
Si ça ne marche pas, ça veut dire que la fonction file_get_contents n'est pas autorisée à aller chercher du contenu sur un autre serveur ... donc pas moyen
0
kaisserr Messages postés 52 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 16 août 2011 3
20 juil. 2009 à 18:51
ouai c'est bon j'ai le contenu, alors maintenant ce serait mieu encore si je pouvais afficher juste le titre, la description, les mots clés .
En fait est ce que c'est un tableau que la fonction a retourné?
si c'est le cas j'espère que je peux faire ceci:
$donnees=htmlentities(file_get_contents('http://www.google.fr'));
$titre=$donnees['title'];?



merci d'avance
0
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
20 juil. 2009 à 19:15
Non ! la fonction retourne une chaine de caractère.
Il faut rechercher à l'intérieur avec les fonctions de recherches. (il serait possible d'utiliser un parseur xml, mais c'est encore plus galère dans ce cas précis.

$donnees=file_get_contents('http://www.google.com');

$titre = getRegex('#<title>(.*?)</title>#i', $donnees );

echo $titre;

function getRegex( $regex, $data )
{

    if( preg_match($regex, $data, $out ) )
    {
        return $out[1];
    }
    return false;
}


un petit code qui fonctionne pour récupérer le titre dans la variable titre
0
kaisserr Messages postés 52 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 16 août 2011 3
22 juil. 2009 à 17:51
merci beaucoup, là ça marche bien avec le titre, mais pour les reste on ne peut pas utiliser cette fonction je crois, en tout cas moi je viens de faire avec get_meta_tags() pour les metabalises comme la description du site, les mots clés , l'auteur ...

dans tout le cas merci encore , ton code m'a vraiment aidé.
0
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
22 juil. 2009 à 18:16
en fait, tu peux maintenant rechercher ce que tu veux dans la page !

rajoute juste :

$description = getRegex('#<meta name="description" content="(.*?)"#i', $donnees );


ATTENTION, l'écriture des regex est plus ou moins complexe. ici c'est un exemple très simple.
ATTENTION aussi, dans ce cas, il faut impérativement que la balise méta ai la forme recherchée, au caractère près ... ( " / ' ... )

Une bonne adresse pour apprendre à se servir des regex :
https://lumadis.be/regex/tuto_pcre.php

Pour la suite, tu te débrouille ...
0
kaisserr Messages postés 52 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 16 août 2011 3
1 août 2009 à 10:41
merci, ouai c'est ca, finalement ca a marché!!!
0