[PHP] Ereg () mais pas pour tout

manolo06

Membre confirmé
22 Mars 2008
25
0
Vallauris (06)
Bonjour à tous,
Je rencontre un problème sur un truc apparement simple mais je m'en sors pas ...
Je viens donc vous demander de l'aide.

Voilà, je vais récupérer dans une Bdd l'Id d'un article.
Cette Id, je m'en sert pour aller chercher une image dans un dossier sur mon serveur.
Toutes les noms des images sont de la forme :
id_blabla.jpg

Je récupère les noms avec un :
Bloc de code:
$findme = "" . $id_mod . "_";
if(ereg($findme ,$nomFichier)){... "là j'affiche l'image" ...}
mon problème est que, par exemple, si $id_mod = 12, je récupère tous les noms des images incluant 12, du style :
12_sdqjfqsmdkfj.jpg
mais aussi
112_qsdqs.jpg
121_sdflkhjs.jpg
....

Pareil pour, disons, $id_mod = 7, je souhaiterai récupérer le fichier :
7_sdfdqsfq.jpg
et pas les :
17_sdffds.jpg
71_sdfs.jpg
172_sdfsd.jpg
...

vous voyez le soucis ?

Et bien sûr ça m'affiche la mauvaise image ...
Quelqu'un aurait-il une astuce pour ça ?

En espérant avoir été clair ... :mouais: ... Gracias.
 
Bonsoir,

En expression régulière le _ signifie "n'importe quel caractère'. Ce qui explique les 121, 71 etc.
Il faut utiliser un \ devant, pour spécifier qu'il doit être considérer comme le caractère.

Il faudrait, plus, faire quelque chose comme ça:
Bloc de code:
if (preg_match('/^'.$id_mod.'\_(.*)$/', $nomfichier)) {}
 
Bonsoir,

En expression régulière le _ signifie "n'importe quel caractère'. Ce qui explique les 121, 71 etc.
Il faut utiliser un \ devant, pour spécifier qu'il doit être considérer comme le caractère.

Il faudrait, plus, faire quelque chose comme ça:
Bloc de code:
if (preg_match('/^'.$id_mod.'\_(.*)$/', $nomfichier)) {}

Merci Ouark,

Mon soucis c'est que j'ai pas loin de 1000 fichier avec le _ dans leurs noms ... :siffle:
je me vois mal les renommer quoiqu'avec un logiciel ou un petit script c'est faisable.
Je vis de ce pas tester ta méthode....

Gracias:up:
 
Bonsoir,

En expression régulière le _ signifie "n'importe quel caractère'. Ce qui explique les 121, 71 etc.
Il faut utiliser un \ devant, pour spécifier qu'il doit être considérer comme le caractère.

Il faudrait, plus, faire quelque chose comme ça:
Bloc de code:
if (preg_match('/^'.$id_mod.'\_(.*)$/', $nomfichier)) {}

Salut Ouark,

En fait je me suis servi de ton astuce pour aller charger ma base de données avec les noms des fichiers ...
Comme ça c'est nickel ...
Il y a eu besoin de cette moulinette qu'une fois ...
Maintenant je passe par Mysql pour checker les images des produits ...
Beaucoup plus rapide et "Droit au But" comme on dit à Marseille :cool:

En tout cas merci pour Vos coups de pouce les gars ...