En désespoir de cause, je me tourne vers des pros pour m'aider.
J'ai une chaîne du type : ./datas/XX_TRUCMUCHE/XX.TADADADA/XX._ETENCORE/DESMOTS/XX._PWET/XX_TADA etc.
C'est un exemple, en fait un script examine le contenu d'une architecture dossier et retourne une chaîne de ce type.
Avec : XX = un ou plusieurs chiffres (2 max); les caractères ".", "_" ou espace présents ensemble ou séparément.
Mon but est de ne retenir de cette chaîne que les chiffres/nombres qui sont entre "/" et "._ "
Comme je suis pas du tout un expert en regex, j'avais essayé de bidouiller un truc de ce type :
Code : Tout sélectionner
$chaine="./datas/1_TRUCMUCHE/23.TADADADA/5._ETENCORE/DESMOTS/85._PWET/19_TADA";
$pregchaine=preg_replace('#(.*(\d){1,2}[\/._ ].*)+#i', '$2', $chaine);
echo $pregchaine;1 : elle ne me retourne que la dernière occurrence de sa recherche (ici, "9"), alors qu'il me faudrait tous les chiffres en une chaîne.
2 : si j'ai des chiffres dans le texte, elle les prends aussi en compte, ce qu'il ne faut pas (ce pourquoi je n'ai pas simplement spécifié #\D# dans mon remplace, trop simple sinon
PS : j'ai aussi essayé avec un preg_match_all, et ça me donne ça :
Code : Tout sélectionner
Array ( [0] => Array ( [0] => ./datas/1_TRUCMUCHE/23.TADADADA/5._ETENCORE/DESMOTS/85._PWET/19_TADA ) [1] => Array ( [0] => ./datas/1_TRUCMUCHE/23.TADADADA/5._ETENCORE/DESMOTS/85._PWET/19_TADA ) [2] => Array ( [0] => 9 ) )