[PHP] nom de fichier contenant le caractère +

[Résolu/Fermé]
Signaler
-
 Utilisateur anonyme -
Bonjour,

J'essaye de lire un fichier /usr/share/doc/HOWTO/fr-txt/Bridge+Firewall+DSL.txt.gz, mais il semble que PHP
remplace le + par un espace.

soit je renseigne l'adresse de ma_page.php?filename=/usr/share/doc/HOWTO/fr-txt/Bridge+Firewall+DSL.txt.gz

soit j'appelle ma_page.php, qui s'ouvre sur un formulaire, que je renseigne, mais rien ne se passe.

Les autres fichiers appelés de l'une ou l'autre manière s'affichent correctement.


Que faire ?

par avance merci.

4 réponses


Essai d'indiquer l'url avec des "%2B" à la place des "+", ou passe le lien vers ton fichier dans la fonction rawurlencode : http://php.net/manual/en/function.rawurlencode.php

Merci sonik21.

Effectivement, ça fonctionne dans le premier cas, mais pas le second (si je saisis le nom du fichier dans le formulaire) :(

Pour l'instant, je passe par un
$PathFile = preg_replace('/ /', '+', $_POST['filename']);
afin que ça fonctionne dans tous les cas. Mais, je trouve ça un peu moyen ~

Tu as essayé avec rawurlencode ?
$PathFile = rawurlencode($_POST['filename']);

désolé, je n'ai pas précisé,
mais oui
c'est bien rawurlencode que j'ai le plus testé.

Bon, finalement, ça fonctionne (toujours le problème de bien mettre à jour les pages après modifications du code) :
dans la page qui envoie le lien je 'rawurlencode' le nom du fichier -> OK, le fichier s'affiche
dans la page qui affiche le formulaire, j'ai retiré le 'preg_replace', qui ne sert pas si je remplis le formulaire -> OK, le fichier s'affiche.

encore merci sonik21.