Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2008, 17h27   #1
Him
Membre régulier
 
Avatar de Him
 
Inscription : février 2006
Messages : 244
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations forums :
Inscription : février 2006
Messages : 244
Points : 79
Points : 79
Envoyer un message via ICQ à Him
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 :
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 :
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
__________________
» Are You Funky or Fuckly? «
Him est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 13h21   #2
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Salut,

essaye ça :
Code :
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;
		}
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 13h39   #3
Him
Membre régulier
 
Avatar de Him
 
Inscription : février 2006
Messages : 244
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations forums :
Inscription : février 2006
Messages : 244
Points : 79
Points : 79
Envoyer un message via ICQ à Him
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.
__________________
» Are You Funky or Fuckly? «
Him est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h17   #4
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
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 ?
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 14h22   #5
Him
Membre régulier
 
Avatar de Him
 
Inscription : février 2006
Messages : 244
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations forums :
Inscription : février 2006
Messages : 244
Points : 79
Points : 79
Envoyer un message via ICQ à Him
oui biensur,
voici la fonction complète.

( avec ta modif. )

Code :
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.
__________________
» Are You Funky or Fuckly? «
Him est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h15   #6
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Citation:
Envoyé par Him Voir le message
oui biensur,
voici la fonction complète.

( avec ta modif. )

Code :
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...
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 15h39   #7
Him
Membre régulier
 
Avatar de Him
 
Inscription : février 2006
Messages : 244
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations forums :
Inscription : février 2006
Messages : 244
Points : 79
Points : 79
Envoyer un message via ICQ à Him
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
__________________
» Are You Funky or Fuckly? «
Him est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h03.


 
 
 
 
Partenaires

Hébergement Web