OVH Cloud OVH Cloud

pb preg_replace

3 réponses
Avatar
Youp3
bon là je tourne en rond donc je préfère poser la question. Voilà le
problème :

J'ai des chaînes de caractères dans le style :
11x/Skins/Skin1.zip
12/skins/[103]Skin2.zip
1_3/divers.zip

Je voudrais en fait virer la partie qui se trouve après le dernier "/".
C'est à dire :
11x/Skins/
12/skins/
1_3/

avec preg_replace j'ai essayer de faire dans le genre suivant mais sans
succès.
CODE
$patterns = array( "/^\w+\/\w+\/$/", "/^\w+\/$/");
$replaces = array( "/^\w+/\w+/]", "/^\w+\/$/");
$old_dir = preg_replace($patterns, $replaces, $old_dir);


Si quelqu'un peut me dépanner, ce serait chouette.

3 réponses

Avatar
dominique
Youp3 wrote:
J'ai des chaînes de caractères dans le style :
11x/Skins/Skin1.zip
12/skins/[103]Skin2.zip
1_3/divers.zip

Je voudrais en fait virer la partie qui se trouve après le dernier "/".
C'est à dire :
11x/Skins/
12/skins/
1_3/



tu as 2 solutions pour le faire :
- utiliser la fonction dirname qui retourne le chemin sans le nom de fichier
- si tu veux rester dans les regexp : //[^/]+$/
preg_replace('//[^/]+$/', '', TA_VARIABLE)

--
Dom

Avatar
Guillaume Bouchard
Youp3 wrote:

J'ai des chaînes de caractères dans le style :
11x/Skins/Skin1.zip

Je voudrais en fait virer la partie qui se trouve après le dernier "/".
11x/Skins/


Aide toi de

http://www.php.net/basename
et
http://www.php.net/dirname.

--
Guillaume.

Avatar
Edouard Guerin
Salut,

Je ne suis pas sûr de mon coup...

$old_dir = (eregi("([a-z0-9_- ]*/)([a-z0-9_- ]*).zip", $old_dir, $reg)) ?
$reg[1] : $old_dir;

@+

--
Edouard Guérin
http://www.icitrus.net