Erreur d'écriture d'URL, caractères spéciaux.
HollyDeadCow
-
HollyDeadCow Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
HollyDeadCow Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Navré de venir poser une question sans doute de débutant. En même temps, je le suis absolument.
Je souhaite pouvoir lister les fichier d'un répertoire sous forme de liens sur une page quelconque. J'ai pu utiliser pour cela l'excellent script en PHP de gryzzly, et tout fonctionne de ce côté. Ma page liste parfaitement les liens qui correspondent aux fichiers contenus dans le répertoire.
Seulement, quand je les clique, certain d'entre eux me conduisent à une page d'erreur avec ce type de commentaires :
"Not Found
The requested URL /textes_traduits//Commentaire sur le Mahamoudra Upadesha - traduction française.doc was not found on this server."
Je me doute bien qu'il y a un soucis au niveau de la retranscription des noms de fichiers. Le problème dans ce cas de figure, c'est que les noms de ces fichiers comportent pour beaucoup des caractère spéciaux.
Existe-t-il un moyen, sans modifier le nom des fichiers existants, d'obtenir une écriture fonctionnelle des url correspondantes, tout en gardant le côté automatisé de la chose, parce que je je risque d'en avoir (vraiment) beaucoup à mettre en ligne.
Pour rappelle, le script de gryzzly, que j'ai utilisé sans soucis :
En vous remerciant, tous, d'avance pour votre patience, j'ai vraiment fouillé au maximum, mais hélas mes failles en PHP (entre autre) tiennent vraiment du gouffre insondable.
Navré de venir poser une question sans doute de débutant. En même temps, je le suis absolument.
Je souhaite pouvoir lister les fichier d'un répertoire sous forme de liens sur une page quelconque. J'ai pu utiliser pour cela l'excellent script en PHP de gryzzly, et tout fonctionne de ce côté. Ma page liste parfaitement les liens qui correspondent aux fichiers contenus dans le répertoire.
Seulement, quand je les clique, certain d'entre eux me conduisent à une page d'erreur avec ce type de commentaires :
"Not Found
The requested URL /textes_traduits//Commentaire sur le Mahamoudra Upadesha - traduction française.doc was not found on this server."
Je me doute bien qu'il y a un soucis au niveau de la retranscription des noms de fichiers. Le problème dans ce cas de figure, c'est que les noms de ces fichiers comportent pour beaucoup des caractère spéciaux.
Existe-t-il un moyen, sans modifier le nom des fichiers existants, d'obtenir une écriture fonctionnelle des url correspondantes, tout en gardant le côté automatisé de la chose, parce que je je risque d'en avoir (vraiment) beaucoup à mettre en ligne.
Pour rappelle, le script de gryzzly, que j'ai utilisé sans soucis :
<?php $dir_nom = './textes_traduits/'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.' --> ('point') $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant $fichier= array(); // on déclare le tableau contenant le nom des fichiers $dossier= array(); // on déclare le tableau contenant le nom des dossiers while($element = readdir($dir)) { if($element != '.' && $element != '..') { if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;} else {$dossier[] = $element;} } } closedir($dir); if(!empty($dossier)) { sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant echo "Liste des dossiers accessibles dans '$dir_nom' : \n\n"; echo "\t\t<ul>\n"; foreach($dossier as $lien){ echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n"; } echo "\t\t</ul>"; } if(!empty($fichier)){ sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant echo "Liste des fichiers/documents accessibles dans '$dir_nom' : \n\n"; echo "\t\t<ul>\n"; foreach($fichier as $lien) { echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n"; } echo "\t\t</ul>"; } ?>
En vous remerciant, tous, d'avance pour votre patience, j'ai vraiment fouillé au maximum, mais hélas mes failles en PHP (entre autre) tiennent vraiment du gouffre insondable.
A voir également:
- Deux caracteres manquent dans l'url
- Url - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Deux ecran pc - Guide
8 réponses
echo '\t\t\t<li><a href="'.urlencode($dir_nom).'/'.urlencode($lien).'">'.$lien.'</a></li>';
je fais tout de travers aujourd'hui... un problème avec les double quotes
je fais tout de travers aujourd'hui... un problème avec les double quotes
"\t" ça te donne une tabulation, '\t' ça t'inscrit antislash-t
c'est pareil avec "\n" que j'ai subtilement effacé de la ligne : le code généré est plus espacé, mais ça prend des ko à charger ;-)
c'est pareil avec "\n" que j'ai subtilement effacé de la ligne : le code généré est plus espacé, mais ça prend des ko à charger ;-)
Essaie de remplacer les 2 lignes
echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
par
echo "\t\t\t<li><a href=\".urlencode($dir_nom)."/".urlencode($lien).">".$lien."</a></li>\n";
echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
par
echo "\t\t\t<li><a href=\".urlencode($dir_nom)."/".urlencode($lien).">".$lien."</a></li>\n";
Mais le plus propre reste de ne plus utiliser de caractères spéciaux dans tes noms de fichier ;-)
Un grand merci à toi, zcrew!
Je vais essayer ce petit bout de code, je vous tiens au courant.
Je sais bien que l'idéal serait que nom des fichier soit débarrassé des caractère spéciaux, mais le propriétaire du site y tien vraiment... Je n'ai pas encore réussi à le convaincre d'en modifier une grande partie. :/
En attendant, je fais le test!
Je vais essayer ce petit bout de code, je vous tiens au courant.
Je sais bien que l'idéal serait que nom des fichier soit débarrassé des caractère spéciaux, mais le propriétaire du site y tien vraiment... Je n'ai pas encore réussi à le convaincre d'en modifier une grande partie. :/
En attendant, je fais le test!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Malheureusement, zcrew, malgré ton effort, cela ne fonctionne pas non plus, j'obtiens sur la page le message suivant :
Parse error: syntax error, unexpected '<' in /homez.51/sevendus/sanghaforum.com/listing_textes.php on line 31
Évidement mes maigres connaissances ne me permettent pas de déceler ou se situe l'erreur de syntaxe.
Une autre idée?
Parse error: syntax error, unexpected '<' in /homez.51/sevendus/sanghaforum.com/listing_textes.php on line 31
Évidement mes maigres connaissances ne me permettent pas de déceler ou se situe l'erreur de syntaxe.
Une autre idée?
Alors... J'ai un tout petit peu modifié la ligne de code que tu m'as fournie :
Qui est devenue :
Si non, j'obtenais des signes "+" à la place des espaces dans les URL .
J'ai du aussi remplacer :
Par :
Et sur la finalité, cela marche à merveille!!!
Il me reste à comprendre l'usage des "\t\t\t...", parce qu'il s'affiche dans ma page.
Je pense bientôt mettre en résolu.
Echo '\t\t\t<li><a href="'.urlencode($dir_nom).'/'.urlencode($lien).'">'.$lien.'</a></li>';
Qui est devenue :
Echo '\t\t\t<li><a href="'.urlencode($dir_nom).'/'.rawurlencode($lien).'">'.$lien.'</a></li>';
Si non, j'obtenais des signes "+" à la place des espaces dans les URL .
J'ai du aussi remplacer :
$dir_nom = './textes_traduits/'
Par :
$dir_nom = 'textes_traduits';
Et sur la finalité, cela marche à merveille!!!
Il me reste à comprendre l'usage des "\t\t\t...", parce qu'il s'affiche dans ma page.
Je pense bientôt mettre en résolu.