Bonsoir a tous,

j'ai une url du type /folder/file.ext (folder pouvant representer une suite de sous repertoir )

je souhaierais vérifier si cette URL verifie l'un des "motife" suivant :
  • /folder
  • /folder/
  • /a_file.php
  • /folder/.../folder
  • /folder/.../folder/
  • /folder/.../a_file.php


et récuperer le chemin et le nom-de-base du fichier ( sans l'extension ) là est mon probleme ...

J'ai essayé pas mal de chose, mais il doit y avoir encore des trucs qui m'échape.

La premier chose sur laquel je bloque est de vérifier si l'URL fini par / ou .php et du coup , récuperer le reste de l'url
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
/*
// motife valide :
//=======================
 /folder
 /folder/
 /a_file.php
 /folder/.../folder
 /folder/.../folder/
 /folder/.../a_file.php
*/
$str='/folder/file.php';
$regex='^(.*)(/|\.php)?$';// le ' ? ' finale pose des probleme :?
 
if (ereg ($regex, $str, $regs)) {
    for($i=0;$i<sizeof($regs);$i++)
      echo $i.'->'.$regs[$i].'<br>';
}
/*
// OutPut :
//========================
0->/folder/file.php
1->/folder/file.php
2->
*/
// $regs[0] correspond a la chaine traité
PS : Je pensais que $reg[2] ( dans cette exemple) devait m'afficher .php . Mais j'ai l'impression que le (.*) qui precede le (/|\.php)? l'emporte a cause du ? car si je l'enleve ou que je met un + ca marche mais plus pour le cas ou url = /folder