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 15/12/2010, 14h30   #1
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 129
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 129
Points : 38
Points : 38
Par défaut [php5]preg_match($pattern,$Entry ) expression

bonjour
j'ai un soucis avec mon expression régulière, lorsque je rentre le pattern en dur(je le récupère a travers un sniffer "charles") ça fonctionne, mais lorsque je laisse le code le générer et le passer en argument a preg_match($pattern,$Entry ) ca ne fonctionne plus. je ne vois pas ou est la différence entre les deux expressions

merci si qq1 y voit mieux que moi, c'est super .....
merci
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
public function  retour($directory,$extension){
 
 
		//creation xml
		$this->directoryXML = new DOMDocument();
		// racine du fichier xml : repertoire public 
		$this->directoryXML->loadXML('<?xml version="1.0" encoding="ISO-8859-1"?> <directory> <galeries> </galeries> </directory>');
 
 
		$MyDirectory = opendir($directory) or die('Erreur');
 
		//$node = $this->directoryXML->documentElement;
		$this->node = $this->directoryXML->getElementsByTagName("galeries")->item(0);
		//$this->node = $this->directoryXML;
		//$myTab = array();	
 
		// verification extension autorisées 
 
		$pattern = "'#";
 
		foreach($extension as $value)
		{
			if(!($value == end($extension)))
			{
				$pattern.=$value.'$|';
			}else{
 
				$pattern.=$value.'$';
 
			}
		}
 
		$pattern .= "#'";
 
               //expression récupérer dans le sniffer avec laquelle ca fonctionne
 
		//$pattern='#jpg$|png$|jpeg$|gif$#';
 
		while($Entry = @readdir($MyDirectory)) 
		{
			//return $pattern;
 
			/* renvois les extention passé en parametres*/
				if($Entry != '.' && $Entry != '..' && preg_match($pattern,$Entry )>0)
				{
 
 
						$file = $this->directoryXML->createElement("photo");
						// ajoute l'attribut source = nom du fichier medias 
						$file->setAttribute('source',$Entry);
						// ajoute le noeud
						$this->node->appendChild($file);
 
 
				}
		}// fin while 
 
		closedir($MyDirectory);
 
		$xml = $this->directoryXML->saveXML();
 
		return $xml;
 
		//return $pattern;
 
 
 
 
	}// fin retour
bruno.rotrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h41   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
tu te compliques pour pas grand chose, déjà pour parcourirs tes fichiers utilises FilesytemIterator, ensuite si tu veux filter l'extension pas besoin d'un regex, récupère l'extension avec pathinfo un coup de in_array et vendu

sinon ton expression devrait ressembler a ca :
Code :
#\.(?:jpg|png|jpeg|gif)$#
et d'ailleurs tu peux faire un RegexIterator sur le FilesytemIterator pour les filtrer
__________________
http://blog.stealth35.com/
stealth35 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 04h35.


 
 
 
 
Partenaires

Hébergement Web