IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Remplacement de caractères


Sujet :

Langage PHP

  1. #1
    Membre extrêmement actif
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Points : 1 921
    Points
    1 921
    Par défaut [Tableaux] Remplacement de caractères
    Bonjour à Tous,

    Voilà j'ai un formulaire d'upload en PHP, pour l'upload d'images.

    J'ai donc fait un système très simpliste, qu'une fois l'upload terminé, la page affiche l'image uploadé ainsi que son lien direct.

    Et c'est là que j'ai des petits soucis, lorsque le nom de l'image uploadé comporte des espaces, des accents ou autres caractères spéciaux, l'upload se fait bien comme il faut, enregistre l'image sur le serveur avec son vrai nom...
    Mais le problème c'est ma variable du lien direct de mon image, par exemple, si j'uploade une image comme "moi et toi.jpg" ma variable contenant l'ensemble de l'adresse de l'image contiendra seulement "moi"

    Je pense à une mauvaise déclaration de variable

    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?php
     
     
    $fichier="compteur.txt";
     
       // Incrémente le compteur
       $inF = fopen($fichier,"a+");
       fputs($inF,"."); 
       fclose($inF);
     
     
    // Lecture de la taille du fichier
    $cpt = filesize($fichier);
     
     
     
    if( isset($_POST['upload']) ) // si formulaire soumis
    {
        $content_dir = 'img/'; // dossier où sera déplacé le fichier
     
        $tmp_file = $_FILES['fichier']['tmp_name'];
     
        if( !is_uploaded_file($tmp_file) )
        {
            exit("Le fichier est introuvable");
        }
     
        // on vérifie maintenant l'extension
        $type_file = $_FILES['fichier']['type'];
     
        if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') )
        {
            exit("Le fichier n'est pas une image !");
        }
     
        // on copie le fichier dans le dossier de destination
        $name_file = $cpt.$_FILES['fichier']['name'];
     
        if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
        {
            exit("Impossible de copier le fichier dans $content_dir");
        }
     
        echo "<center><b>Le fichier a bien été uploadé !</b>";
        echo "<br><br><img src='",$content_dir,"/",$name_file,"'><br>";
        echo "<br><input onFocus=javascript:document.all.adrss.select(); name=adrss size=90 type=text value=";
        echo "http://mon-site.net/upload/",$content_dir,"/",$name_file;
        echo "><br><br><a href=index.html>Retour</a>";
    }
     
    ?>
    Merci

  2. #2
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Avec un serveur sous linux, il faut échapper les espaces dans les noms de fichiers comme dans le bash (avec backslash).
    Sinon remplacer les espaces par des underscores est une bonne idée de toutes façons.

  3. #3
    Membre extrêmement actif
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Points : 1 921
    Points
    1 921
    Par défaut
    Citation Envoyé par is_null
    Avec un serveur sous linux, il faut échapper les espaces dans les noms de fichiers comme dans le bash (avec backslash).
    Sinon remplacer les espaces par des underscores est une bonne idée de toutes façons.
    Merci beaucoup mais comment ?

  4. #4
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Utilise str_replace pour remplacer toutes les occurences de caractère espace par la chaine :
    D'autres caractères poseront problème, si ce problème apparait, l'usage d'une expression regulière semble appropriée.

  5. #5
    Membre extrêmement actif
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Points : 1 921
    Points
    1 921
    Par défaut
    Merci donc si je comprends bien, il faut faire qqchose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $caracts = array(" ", "é", "è", "...");
    echo $urldelimg = str_replace($caracts, "", "url_de_l_image");

  6. #6
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par ArHacKnIdE
    Merci donc si je comprends bien, il faut faire qqchose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $caracts = array(" ", "é", "è", "...");
    echo $urldelimg = str_replace($caracts, "", "url_de_l_image");
    Cela règlera le problême. Dans ce cas pourquoi ne pas faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $caracts_avant = array(" ", "é", "è", "...");
    $caracts_apres = array("_", "e", "e", "...");
    echo $urldelimg = str_replace($caracts_avant, $caracts_apres, "url_de_l_image");

  7. #7
    Membre extrêmement actif
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Points : 1 921
    Points
    1 921
    Par défaut
    Citation Envoyé par is_null
    Cela règlera le problême. Dans ce cas pourquoi ne pas faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $caracts_avant = array(" ", "é", "è", "...");
    $caracts_apres = array("_", "e", "e", "...");
    echo $urldelimg = str_replace($caracts_avant, $caracts_apres, "url_de_l_image");
    Merci ça marche

    Maintenant faut que je fasse cela avec tous les ä â ö ô à ï î...

    Encore Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/06/2007, 14h28
  2. [Tableaux] Remplacer des caractères
    Par kevinf dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2006, 09h13
  3. Réponses: 5
    Dernier message: 30/10/2006, 13h37
  4. [Tableaux] remplacer caractère '
    Par robert_trudel dans le forum Langage
    Réponses: 1
    Dernier message: 01/10/2006, 03h53
  5. Réponses: 2
    Dernier message: 24/09/2006, 21h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo