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 :

soucis pour adapter une requête [RegEx]


Sujet :

Langage PHP

  1. #1
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut soucis pour adapter une requête
    Salut tout le monde,

    je viens de récupérer le script d'un ami, utile pour le suivi de mon positionnement sur les moteurs.

    seul hic, une fonction de son script ne marche qu'avec google.fr

    ( si j'ai bien compris il s'agit d'une question de . et espace ! )

    en effet, pour la requete voulue sur google.fr le résultat est :

    "Résultats 1 - 10 sur un total d'environ 2 470 sur trucmachin.be (0,17 secondes)"

    google.com

    "Résultats 1 - 10 sur un total d'environ 2.470 sur trucmachin.be (0,17 secondes)"

    la seule différence que j'y vois donc c'est le . ( point ) en place de l'espace dans le résultat "2 470".

    Bref, sa requête initiale était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(preg_match("!Résultats <b>([0-9]+)</b> - <b>([0-9]+)</b> sur (un total d'environ )?<b>([0-9]+(&nbsp;[0-9]+)?)</b> sur <b>$ndd</b>!",$html, $href) ) {
    		return trim(str_replace('&nbsp;','',$href[4]));
    		return 0;
    		}
    & j'ai essayé de rajouter un elseif pour les autres cas.

    mais cha marche pas... je ne trouve pas comment modifier la valeur recherchée. j'ai bien remplacé &nbsp, par . dans le return trim, et dans le preg_match, mais visiblement ça n'est pas si simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(preg_match("!Résultats <b>([0-9]+)</b> - <b>([0-9]+)</b> sur (un total d'environ )?<b>([0-9]+(&nbsp;[0-9]+)?)</b> sur <b>$ndd</b>!",$html, $href) ) {
    		return trim(str_replace('&nbsp;','',$href[4]));
    		return 0;
    		} elseif(preg_match("!Résultats <b>([0-9]+)</b> - <b>([0-9]+)</b> sur (un total d'environ )?<b>([0-9]+(.[0-9]+)?)</b> sur <b>$ndd</b>!",$html, $href) ) {
    		return trim(str_replace('.','',$href[4]));
    		return 0;
    		}
    Merci d'avance pour votre aide

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Salut,

    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(preg_match("!Résultats <b>([0-9]+)</b> - <b>([0-9]+)</b> sur (un total d'environ )?<b>([0-9]+(&nbsp;|\.)?[0-9]+)</b> sur <b>$ndd</b>!",$html, $href) ) {
    		return trim(str_replace('&nbsp;','',$href[4]));
    		return 0;
    		}

  3. #3
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    hello, merci d'abord d'avoir déplacer mon message dans ce forum plus approprié.
    Ensuite, merci à toi pour ta réponse.

    J'aime bien l'idée en elle même,
    mais ça ne change rien.

    ne serait-ce pas parcequ'ici

    return trim(str_replace('&nbsp;','',$href[4]));

    il faut pas également joué du . ?
    je dis peut être une bétise monumentale, mais mes conaissances en péhachepé sont en voie de développements, mais la c'est trop avancé pour moi.

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    A première vue, ce n'est pas vraiment un problème de php mais plutôt d'expressions régulières (qui sont utilisées dans beaucoup de langages ).

    Pour pouvoir plus t'aider, est-ce que tu peux me dire comment est initialisée la variable $html ?

  5. #5
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    oui biensur,
    voici la fonction complète.

    ( avec ta modif. )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function site_indexed($ndd) {
        $serveur = $this->serveurs[0]; 
        $html = file_get_contents( "http://$serveur/search?q=site%3A".$ndd );
     
    	if(preg_match("!Résultats <b>([0-9]+)</b> - <b>([0-9]+)</b> sur (un total d'environ )?<b>([0-9]+(&nbsp;|.)?[0-9]+)</b> sur <b>$ndd</b>!",$html, $href) ) {
    		return trim(str_replace('&nbsp;','',$href[4]));
    		return 0;
    	}
     
    }
    ( serveur = google.com, google.be, google.fr, etc... )
    Merci à toi de t'intéresser à mon problème.

  6. #6
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par Him Voir le message
    oui biensur,
    voici la fonction complète.

    ( avec ta modif. )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function site_indexed($ndd) {
        $serveur = $this->serveurs[0]; 
        $html = file_get_contents( "http://$serveur/search?q=site%3A".$ndd );
     
    	if(preg_match("!Résultats <b>([0-9]+)</b> - <b>([0-9]+)</b> sur (un total d'environ )?<b>([0-9]+(&nbsp;|.)?[0-9]+)</b> sur <b>$ndd</b>!",$html, $href) ) {
    		return trim(str_replace('&nbsp;','',$href[4]));
    		return 0;
    	}
     
    }
    ( serveur = google.com, google.be, google.fr, etc... )
    Merci à toi de t'intéresser à mon problème.
    Je viens de regarder, et sauf erreur une interrogation de google.com renvoie des infos... en anglais !

    Dans ce cas, c'est sûr que rechercher la phrase "Résultats (...) - (...) sur un total d'environ (...) sur monserveuramoi.com" ne va pas ramener grand chose !

    Pour le vérifier, tu peux faire un simple var_dump (ou echo si tu préfères) de $html...

  7. #7
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    ah oui

    bien vu !

    -> ça marche

    you're a king.

    ( en fait, pour le positionnement d'un keyword on passe via google.com/search.php?hl=fr ) qui nous donne les resultats.

    ce qui n'est pas possible dans l'immédiat pour la requête "site:site.com" !
    je ferai donc un switch, en fonction du serveur la dessus aussi.

    pour l'instant, j'ai 4 if successifs, c'est point bien grave !

    merci pour tout

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

Discussions similaires

  1. [AC-2007] Macro sur formulaire pour lancer une requête adaptable
    Par Kuccia dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/08/2009, 17h25
  2. Aide pour écrire une requête complexe
    Par julienbdx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/11/2005, 16h58
  3. problème pour faire une requête
    Par mitchbuck dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/11/2005, 22h48
  4. [MySQL] Afficher le temps mis pour executer une requête SQL
    Par micatmidog dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/09/2005, 11h23
  5. Réponses: 7
    Dernier message: 03/06/2004, 12h46

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