Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

afficher sans extension

3 réponses
Avatar
oliv
J'utilise le script suivant pour afficher toutes les pages html et php contenues dans le répertoire ou se trouve le script.
Mais ce script affiche les pages avec l'extension .htm, .php, et je voudrais la supprimer.
Mais lorsque j'essaie de supprimer l'extension, les liens ne fonctionnent plus.
Comment dissocier le texte affiché (sans extension), du lien vers la page (avec extension) ?
script :

<?php

function listing($repertoire){

$fichier = array();

if (is_dir($repertoire)){

$dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable
while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file

if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'

$page = $file; //sort l'extension du fichier
$page = explode('.', $page);
$nb = count($page);
$nom_fichier = $page[0];
for ($i = 1; $i < $nb-1; $i++){
$nom_fichier .= '.'.$page[$i];
}
if(isset($page[1])){
$ext_fichier = $page[$nb-1];
if(!is_file($file)) { $file = '/'.$file; }
}
else {
if(!is_file($file)) { $file = '/'.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
$ext_fichier = '';
}

if($ext_fichier != 'php' and $ext_fichier != 'html') { //utile pour exclure certains types de fichiers à ne pas lister
array_push($fichier, $file);
}
}
}
}

natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse

foreach($fichier as $value) {
echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a><br />';
}

}

//exemple d'utilisation :

listing('.'); //chemin du dossier


--
oliv

------------------------------------------------------------------------
Voir theme: http://www.frbox.net/viewtopic-580503.html

Envoyé de http://www.frbox.net

3 réponses

Avatar
Olivier Miakinen

J'utilise le script suivant pour afficher toutes les pages html et php contenues dans le répertoire ou se trouve le script.


Quant au logiciel de nouvelles que tu utilises, « Punbb », il serait
bien de le configurer pour qu'il n'envoie pas de lignes de plus d'une
septantaine de caractères. Si ce n'est pas possible parce que c'est une
passerelle web/news, essaye d'envisager d'utiliser un *vrai* nouvelleur.

Bon, pour la suite je reformate.

Mais ce script affiche les pages avec l'extension .htm, .php, et je
voudrais la supprimer. Mais lorsque j'essaie de supprimer l'extension,
les liens ne fonctionnent plus. Comment dissocier le texte affiché
(sans extension), du lien vers la page (avec extension) ?


Je vois au moins deux méthodes.


[...]

echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace
('/', '', $value)).'">'.$value.'</a><br />';


La méthode moche consiste à agir dans la ligne ci-dessus, et à laisser
la valeur de l'attribut href inchangée (y compris donc le $value dans le
href), et à supprimer l'extension du dernier $value de cette ligne.

La méthode sympa et utile consiste à ce que toutes les pages soient
effectivement accessibles sans extension. Si ton serveur est Apache,
cela se fait par un « Options +MultiViews » dans le fichier .htaccess .
À ce moment là tu peux virer l'extension aussi bien dans l'url (attribut
href) que dans ce qui est affiché.


Cordialement,
--
Olivier Miakinen

Avatar
Vincent Lascaux
echo '<a
href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace
('/', '', $value)).'">'.$value.'</a><br />';


La méthode moche consiste à agir dans la ligne ci-dessus, et à laisser
la valeur de l'attribut href inchangée (y compris donc le $value dans le
href), et à supprimer l'extension du dernier $value de cette ligne.

La méthode sympa et utile consiste à ce que toutes les pages soient
effectivement accessibles sans extension. Si ton serveur est Apache,
cela se fait par un « Options +MultiViews » dans le fichier .htaccess .
À ce moment là tu peux virer l'extension aussi bien dans l'url (attribut
href) que dans ce qui est affiché.


C'est marrant, j'aurais dit la même chose en intervertissant moche et sympa.
Je trouve ca assez decevant de changer l'URL d'une page juste pour pouvoir
changer l'aspect de l'index. C'est important je trouve de séparer
l'affichage des données (ici les données ce sont les URLs). Si tu veux les
liens en gras, tu vas renommer tes fichiers en <b>bla</b> ? :)

--
Vincent


Avatar
Olivier Miakinen
Le 29/06/2006 08:57, Vincent Lascaux m'a répondu sur fr.comp.lang.php :

[ ne pas afficher les extensions des url ]


La méthode moche consiste à [ cacher l'extension dans ce qui est affiché
mais la laisser dans l'attribut href du lien ]

La méthode sympa et utile consiste à ce que toutes les pages soient
effectivement accessibles sans extension. Si ton serveur est Apache,
cela se fait par un « Options +MultiViews » dans le fichier .htaccess .
À ce moment là tu peux virer l'extension aussi bien dans l'url (attribut
href) que dans ce qui est affiché.


C'est marrant, j'aurais dit la même chose en intervertissant moche et sympa.
Je trouve ca assez decevant de changer l'URL d'une page juste pour pouvoir
changer l'aspect de l'index.


Contrairement aux apparences, nous sommes d'accord sur le fond. ;-)

L'option MultiViews permet justement de ne plus jamais avoir besoin de
changer l'URL, même lorsque l'extension du fichier change par la suite
(par exemple pour passer une page HTML en PHP ou en PERL ou en n'importe
quoi d'autre). Note que les anciens liens avec suffixe continueront de
fonctionner sur les fichiers actuels, cela ne casse donc pas les liens
mis en signets ou référencés sur d'autres sites.

Voir :
<http://www.w3.org/Provider/Style/URI> [en]
<http://www.la-grange.net/w3c/Style/URI> [fr]

Note que cela vaut pour le HTML (l'une de ces deux pages est en .html,
l'autre en .php) :
<http://www.miakinen.net/vrac/nombres>
<http://www.miakinen.net/vrac/fenetre>
... mais aussi pour les images (.jpg ou .jpeg, .gif, .png, etc.) :
<http://www.miakinen.net/images/jeu_boucles>
<http://www.miakinen.net/images/anyb>
<http://www.miakinen.net/vrac/chuquet>
<http://www.miakinen.net/photos/quirendfou>

C'est important je trouve de séparer l'affichage des données


Entièrement d'accord.

(ici les données ce sont les URLs).


Pas d'accord, puisque les URL s'affichent aussi dans le navigateur,
qu'on peut les mettre en signets, les inclure dans d'autres pages web,
etc. Si on peut les rendre invariantes sans rien changer au reste,
autant le faire (en plus, avec un serveur Apache c'est d'une facilité
déconcertante).

Si tu veux les
liens en gras, tu vas renommer tes fichiers en <b>bla</b> ? :)


Intéressante MÀLC, mais inappropriée. D'autant plus que je ne renomme
justement pas les fichiers, et qu'au contraire ce que je suggère évite
d'avoir à renommer les URL si, plus tard, on a besoin de changer quelque
chose.

[ copie et suivi sur fr.comp.infosystemes.www.auteurs ]