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

Résolu
Utilisateur anonyme -  
 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.
Configuration: Debian GNU/Linux Stable

4 réponses

  1. Utilisateur anonyme
     
    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
  2. Utilisateur anonyme
     
    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
  3. Utilisateur anonyme
     
    Tu as essayé avec rawurlencode ?
    $PathFile = rawurlencode($_POST['filename']);
    
    0
  4. Utilisateur anonyme
     
    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