que fait cette expression régulièr e ?
Gilles Vincent <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <CA+Q4Cmv9ghjay=vBDYTKZyD9tsVhKMK6M42hy3nmN4oNT0J_gA@mail.gmail.com> |
Salut,
je comprends mal le fonctionnement d'une expression régulière.
Elle se situe dans ecire/exec/valider.xml
$ext = !preg_match('*/^[.*\w]+$*/', $req_ext) ? 'php' : $req_ext;
Son origine est le changement 15957
Index: branches/spip-2.1/ecrire/exec/valider_xml.php
===================================================================
--- branches/spip-2.1/ecrire/exec/valider_xml.php (revision 15956)
+++ branches/spip-2.1/ecrire/exec/valider_xml.php (revision 15957)
@@ -48,16 +48,20 @@
if (is_dir($url)) {
$dir = (substr($url,-1,1) === '/') ? $url : "$url/";
- $ext = !preg_match('*/^\w+$/*', $req_ext) ? 'php' : $req_ext;
- $files = preg_files($dir, $ext . '$', $limit, $rec);
+ $ext = !preg_match('*/^[.*\w]+$/*', $req_ext) ? 'php' :
$req_ext;
+ $files = preg_files($dir, "$ext$", $limit, $rec);
if (!$files AND $ext!=='html') {
$ext = 'html';
$files = preg_files($dir, "$ext$", $limit, $rec);
}
- if ($files)
- $res = valider_dir($files, $ext, $url);
- else $res = _T('texte_vide');
- $bandeau = $dir . '*' . $ext;
+ if ($files) {
+ list($err, $res) = valider_dir($files, $ext, $url);
+ $err = ' (' . $err . '/' . count($files) .')';
+ } else {
+ $res = _T('texte_vide');
+ $err = '';
+ }
+ $bandeau = $dir . '*' . $ext . $err;
} else {
if (preg_match('/^([^?]*)[?]([0-9a-z_]+)=(.*)$/', $url, $r)) {
list(,$server, $dir, $script) = $r;
@@ -107,7 +111,7 @@
Avant, je comprends que ça validait le fait que _request('ext') ne
contienne que des caractères de type "mot" (a-z0-9_).
Mais depuis ce commit, je ne vois pas quelle restriction existe sur ce
paramètre (sauf le fait qu'il ne contienne pas de retour à la ligne).
Le commentaire du commit ("pouvoir filtrer les fichiers d'un répertoire
plus finement que par l'extension") ne me permet pas de comprendre les
enjeux qui se situent derrière.
Vu que $ext sert dans preg_files() à construire une expression régulière
"sensible", ne pourrait-on pas revenir à la forme précédente ?
.Gilles