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

Résolu/Fermé
Utilisateur anonyme - 14 déc. 2009 à 17:21
 Utilisateur anonyme - 14 déc. 2009 à 22:04
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.
A voir également:

4 réponses

Utilisateur anonyme
14 déc. 2009 à 18:31
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
0
Utilisateur anonyme
14 déc. 2009 à 19:01
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 ~
0
Utilisateur anonyme
14 déc. 2009 à 21:00
Tu as essayé avec rawurlencode ?
$PathFile = rawurlencode($_POST['filename']);
0
Utilisateur anonyme
14 déc. 2009 à 22:04
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.
0