Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 02/05/2008, 03h29   #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 [Tableaux] Faire un test conditionnel sur valeur tableau

B'jour!

J'ai repris un code existant pour pouvoir apprendre à utiliser le preg_match_all() mais voilà, je suis bloqué juste après son utilisation...

En fait je veux que SI mon caractère est trouvé, alors il me renvoie "existe", sinon il me renvoie "existe pas".

Je me suis dit que le plus simple est de laisser le code tel quel puisqu'il compte le nombre d'occurences trouvées. Ainsi mon code est le suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$file = file_get_contents('http://www.perdu.com/');
preg_match_all("#panique#",$file,$matches);
$nombre_des_resultats=count($matches[0]);
 
if (nombre_des_resultats != 0)
{
echo "existe!";
}
 
	else {
echo "existe pas";
	}
Cependant, mon test ne fonctionne pas, parce que $nombre_des_resultats n'est pas égal à 1 mais il est égal à int(1) , ce qui apparement est différent. A noter, si deux occurences étaient trouvées, la valeur de la variable serait de int(2).

Je ne vois donc pas comment effectuer mon test. J'ai essayé de chercher rapidement s'il fallait faire un "cast" de la valeur mais j'ai abandonné en me disant qu'il y a sans doute plus simple.

Merci de m'avoir lu et merci de votre aide

David
divad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 03h50   #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
Code :
1
2
3
4
5
6
7
8
9
10
11
$file = file_get_contents('http://www.perdu.com/');
preg_match_all("#panique#",$file,$matches);
 
 
if (array_key_exists(0,$matches) !== false)
{
echo "existe!";
}
else {
echo "existe pas";
}
ou

Code :
1
2
3
4
5
6
7
8
9
10
11
$file = file_get_contents('http://www.perdu.com/');
preg_match_all("#panique#",$file,$matches);
 
 
if (count($matches) >= 1)
{
echo "existe!";
}
else {
echo "existe pas";
}
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 08h55   #3
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Bonjour,
Ta variable doit être préfixée par $ ($nombre_des_resultats)
Si tu ne le fais pas, php essaie de l'interpréter comme une chaîne et ça fout ton test en l'air.
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 13h00   #4
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 vos réponses!

Impressionnant Phelim, tu réponds à toutes mes questions depuis deux jours

Merci

Edit:

Heuuu... ça ne marche pas? si je recherche "nnnnnnn" il me dit que ça existe.
Je ne comprends vraiment plus rien. Ca retourne bien une valeur supérieure ou égale à 1 quand une ou plusieurs occurences ont été trouvées (??!!) donc pourquoi il me dit que ça existe toujours?? Je cherche, je cherche...
divad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 13h28   #5
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
Citation:
Impressionnant Phelim, tu réponds à toutes mes questions depuis deux jours
En ce moment, j'ai pas grand chose à faire et ça me fait reviser certains concepts. justement, ça faisait un petit moment que j'avais pas utilisé les expressions regulieres

en faite mon code doit etre changé, par dans tous les cas, le matches est un tableau contenant n elements vides (dependant du nombre de sous pattern)

Code :
1
2
3
4
5
6
7
8
9
10
11
$file = file_get_contents('http://www.perdu.com/');
preg_match_all("#panique#",$file,$matches);
 
 
if (count($matches[0]) >=1)
{
echo "existe!";
}
else {
echo "existe pas";
}
En faite preg_match_all cree un tableau par sous pattern et un tableau pour le pattern complet.
C'est a dire pour un pattern de ce type : #(pan)i(que)#, pour panique, il renvoie sur le tableau 0, pour par, il renvoie sur le tableau 1 et pour que, il renvoie sur le tableau 2.

Apres, il faut en faite regarder le nombre d'element de chaque tableau
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 19h51   #6
Membre à l'essai
 
Inscription : mai 2007
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 146
Points : 23
Points : 23
raaaa c'est cool Merci

l'explication est méga compliquée pour moi, je vais devoir voir ce qu'est précisément un pattern, etc...

Bon ben merci encore

David
divad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 21h07   #7
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
Pattern signifie seulement shéma (a garder en permanence a l'esprit).

Dans ce cas, preg_match utilise un filtre texte. Ce filtre est appellé expression reguliere (ou regexp couramment). Tu utilises la version la plus simple, trouver un mot. Il est possible de décrire tres precisément les mots que tu recherches (genre que je veux que les mots de 5 lettres commencant par b).
On décrit un shéma que le moteur d'expression reguliere interpretera et recherchera. Dans ton cas, le shéma est #panique#
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2008, 00h40   #8
Membre à l'essai
 
Inscription : mai 2007
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 146
Points : 23
Points : 23
Ha ok merci beaucoup pour cette explication, c'est plus clair

Je me suis renseigné sur le site du zero pour les différentes méthodes pour rechercher des chaines de caractères ou des nombres.

Je vais pouvoir avancer dans ma p'tite appli

Bonne soirée!
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 00h21.


 
 
 
 
Partenaires

Hébergement Web