Demande de regex

Eléphanteau du PHP | 16 Messages

23 juin 2008, 23:07

Bien le bonjour,

Voilà mon petit soucis.
J'ai fais un script php qui parcours une arborescence et qui l'affiche (comme l'autoindex de apache).
Je me retrouve avec la chaine suivant (exemple) : c:/tagada/tibidi/shluguvuk

Quel serait le masque à lui appliquer pour supprimer le dernier dossier et obtenir : c:/tagada/tibidi ?
Donc virer cette partie : c:/tagada/tibidi/shluguvuk

J'ai tenté une dizaine de trucs avec preg_replace, mais ou ca supprime rien, ou ca supprime tout...

Actuellement, j'ai cà, et ca marche pas :/^.*[^/].*$/

Merci d'avance...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 juin 2008, 23:15

C'est vrai que c'est toujours plaisant de jouer avec des expressions régulières,
mais des fois c'est bien aussi de gagner du temps ;)

:arrow: dirname()
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 16 Messages

23 juin 2008, 23:30

Tu m'ôte une épine du pied. Ca marche nickel. Je te remercie :D

Mammouth du PHP | 514 Messages

23 juin 2008, 23:30

C'est vrai que c'est toujours plaisant de jouer avec des expressions régulières,
mais des fois c'est bien aussi de gagner du temps ;)

:arrow: dirname()
Cela dit, je cherchais une expression régulière qui permettait de valider un path sous windows ainsi que sous unix ...

si quelqu'un a une solution, je suis preneur.

ViPHP
ViPHP | 5924 Messages

24 juin 2008, 00:51

Les deux en même temps ou bien par 2 expressions régulières ?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

24 juin 2008, 01:45

L'expression régulière serait : #/[^/]*$#
C'est à dire tous ce qui se termine par / suivi de plusieurs caractères sans /

Exemple :
<?php

$texte = "c:/tagada/tibidi/shluguvuk";

echo preg_replace('#/[^/]*$#', '', $texte);

?>
Affiche : c:/tagada/tibidi
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène