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 16/03/2011, 11h07   #1
Invité de passage
 
Homme
Étudiant
Inscription : mars 2011
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mars 2011
Messages : 19
Points : 2
Points : 2
Par défaut Problème pour afficher une regex

Bonjour,

Je débute en Regex et j'ai un petit soucis pour afficher ma regex. Je fais un test pour trouver un mot dans une liste, je récupère le mot dans un formulaire. L'utilisateur tape sa recherche et j'affiche le fichier. Bien sur le code ci dessus est en phase de test.


Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//$motrechercher='code.txt';
$motliste= array("codEx.txt", "referant 120.pdf");
 
if (isset($_POST['fichier']))
{
foreach ($motliste as $listefichier)
{echo 'mot:'.$listefichier.'<br/>"#^[a-z0-9._-]+'.$_POST['fichier'].'[a-z0-9._-]+\.[a-z]{2,4}$#i"<br/>';
	if(preg_match("#^[a-z0-9._-]+/s".$_POST['fichier']."/s[a-z0-9._-]+\.[a-z]{2,4}$#i", $listefichier))
	{
		echo 'le fichier '.$_POST['fichier'].' est contenu dans le liste<br/>';
	}
	else
	{
		echo 'le fichier '.$_POST['fichier'].' n\est pas contenu dans la liste<br/>';
	}
}
}
?>

Merci, LowTiste.
LowTiste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 11h56   #2
Membre actif
 
Avatar de Epica84
 
Christophe GUALANO
Étudiant
Inscription : décembre 2008
Messages : 164
Détails du profil
Informations personnelles :
Nom : Christophe GUALANO
Âge : 22
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2008
Messages : 164
Points : 156
Points : 156
Envoyer un message via MSN à Epica84
J'ai pas bien compris ton problème
__________________
ARLES, du 02 au 05 Avril 2010, Féria de Pâques.
Epica84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 11h57   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
pas besoin de boucle utilise preg_grep, ton expression est fausse aussi
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/03/2011, 12h23   #4
Invité de passage
 
Homme
Étudiant
Inscription : mars 2011
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mars 2011
Messages : 19
Points : 2
Points : 2
Voilà c'est la regex qui est fausse mais je n'arrive pas à savoir pourquoi... Le if évidement ne s'exécute pas.
Je pose un peu le contexte si ça peut aider à comprendre : j'ai une barre de recherche dans laquelle les utilisateurs vont taper le fichier qu'ils cherchent (logique). Je veux que, par exemple si l'utilisateur tape code, tous les fichiers contenant le mot code ou étant composé du mot code (comme codEx) apparaissent. J'ai donc utilisé une expression régulière pour pouvoir faire ma comparaison entre le mot taper dans la barre de recherche et les fichiers qui existent dans mon tableau.

En espérant avoir été un peu plus clair

LowTiste.
LowTiste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 12h46   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Etape 1: Obtenir la liste des fichiers
Etape 2: appliquer un preg grep avec une expression régulière #$search#
Etape 3: Afficher la liste des items matchés par preg grep
Etape 4: ???
Etape 5: Profit!
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 16/03/2011, 13h02   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
si c'est pour des fichiers dans un dossier utilise FilesystemIterator + RegexIterator

voir même un glob pourrai suffire
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 13h48   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Bien vu. Mais là on passe en objet.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 16h26   #8
Invité de passage
 
Homme
Étudiant
Inscription : mars 2011
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : mars 2011
Messages : 19
Points : 2
Points : 2
Étant donné que je suis sur le regex depuis un jour, j'ai un peu de mal à voir l'erreur dans mon expression régulière. Est ce que vous pourriez m'aider ou me dire ce qu'il ne va pas? C'est mieux d'apprendre par soi-même mais des fois c'est cool d'être aiguillé quand il y a blocage .

Merci, LowTiste.
LowTiste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 16h54   #9
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
On ne peut pas dire grand chose sans avoir la liste de fichiers pour comparer, mais j'ai décomposé ta regex, et j'ai mis en majuscule les points qui pourraient poser problème :

Code :
1
2
3
4
5
6
7
8
 
 
$reg = '#
    ^[a-z0-9._-]+/s   # début du nom lettres, chiffres, POINT, - ou _ avec UN SEUL ESPACE
    '.$_POST['fichier'].'
    /s[a-z0-9._-]+    # UN SEUL ESPACE, puis lettres, chiffres, POINT, - ou _
    \.[a-z]{2,4}$     # extension du fichier de deux à quatre lettres
    #ix';
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web