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 01/05/2008, 22h03   #1
Membre à l'essai
 
Inscription : mai 2007
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 146
Points : 23
Points : 23
Par défaut [Autre question] Utilisation de preg_match_all pour un fichier externe

B'jour!

Je suis à la recherche de l'utilisation de preg_match_all pour vérifier qu'une chaine de caractères existe bel et bien mais sur une page externe de celle utilisée pour le script.

Je suis parti du code suivant:

Code :
1
2
3
4
5
6
7
8
9
<?php
$file = "46820 sont des nombres pairs";
preg_match_all("#(\d)#",$file,$matches);
$nombre_des_resultats=count($matches[0]);
foreach ($matches[0] as $match)
{
echo $match.'<br />';
}
?>
et j'ai voulu faire la même chose, en mettant la phrase "46820 sont des nombres pairs" dans un fichier HTML de la manière suivante:

Code :
1
2
3
4
5
6
7
8
9
10
<?php
$file = page.html;
preg_match_all("#(\d)#",$file,$matches);
$nombre_des_resultats=count($matches[0]);
 
for($x=0;$x<$nombre_des_resultats;$x++)
{
echo $matches[0][$x].'<br />';
}
?>
Mais celà ne me renvoie rien du tout...


Pouvez-vous m'aider?

Merci à tous

David
divad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 01h57   #2
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
C'est tout a fait normal.
Il faut ouvrir ton fichier avant et charger son contenu.

Donc readfile ou file_get_contents obligatoire ^^ (attention aux gros fichiers et a la memoire vive)
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 02h28   #3
Membre à l'essai
 
Inscription : mai 2007
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 146
Points : 23
Points : 23
super, merci

Voici donc un code qui fonctionne:

Code :
1
2
3
4
5
6
7
8
9
10
<?php
$file = file_get_contents('http://www.developpez.net/forums/showthread.php?t=266872&highlight=preg_match_all%28%29');
preg_match_all("#(\d)#",$file,$matches);
$nombre_des_resultats=count($matches[0]);
 
for($x=0;$x<$nombre_des_resultats;$x++)
{
echo $matches[0][$x].'<br />';
}
?>
Ce code ressort toutes les valeurs numériques présentes sur la page passée en paramètres

Merci, ça me fait beaucoup avancer

Bonne nuit!

David
divad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 04h13   #4
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
Pour le parcours de tableau (a part les tres gros), la boucle foreach est plus performante, plus lisible et plus facile a utiliser

Code :
1
2
3
4
5
6
7
8
9
10
<?php
$file = file_get_contents('http://www.developpez.net/forums/showthread.php?t=266872&highlight=preg_match_all%28%29');
preg_match_all("#(\d)#",$file,$matches);
 
foreach($matches[0] as $match){
echo $match.'<br />';
}
 
 
?>
A abuser et reabuser ^^
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 12h58   #5
Membre à l'essai
 
Inscription : mai 2007
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 146
Points : 23
Points : 23
Merci pour l'info. En effet, c'est même plus simple à écire!
divad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 07h29   #6
Membre à l'essai
 
Inscription : mai 2007
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 146
Points : 23
Points : 23
Bonjour encore une fois!

Je me pose une grosse question...
Je me sers de preg_match_all pour vérifier la présence d'une adresse web sur une page.
Si je l'écris en dur, il n'y a pas de problèmes.

Le problème vient quand l'adresse est stockée en Base de données. En effet, la page semble être scannée alors qu'elle n'a pas été gérée en HTML avant (car c'est évidement une page PHP...).
Et donc forcément, il me dit toujours que l'adresse n'existe pas puisqu'elle n'a pas été cherchée en BDD.

Cela dit, pour developpez.net, comment se fait-il que je puisse effectuer une recherche sur une page du forum, sur des données stockées en base de données ou calculées depuis la base de données (par exemple, mon nombre de messages, affiché à coté de mon pseudo, sur cette page).

Si vous avez une idée de mon erreur, je suis preneur

Merci :p

David
divad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 12h10   #7
Membre à l'essai
 
Inscription : mai 2007
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 146
Points : 23
Points : 23
Hum... cela viendrait du fait que je rentre mon adresse à explorer du type "page.php" alors que ça a l'air de marcher quand je tape "www.monsite.com/page.php".

Pas pratique à gérér en local...

Je ne dois pas tout saisir.
Mais bon, ça a l'air de fonctionner...
divad 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 00h20.


 
 
 
 
Partenaires

Hébergement Web