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 :

Tester si une chaine est un lien image


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut Tester si une chaine est un lien image
    Bonjour tout le monde.

    Dans une table, j'ai un champ "fichier" qui contient une chaine qui est un chemin vers des images, des zip, des pdf ...

    ex :
    toto.jpg
    test.pdf
    photos.zip

    J'aimerais tester si le lien renvoie vers une image.
    Je me suis dit "Si la chaine contient 'jpeg, jpg , png , gif, bmp' alors c'est une image"

    J'ai donc écrit la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function existeChaine($recherche , $chaine){
     
    	if (substr_count($chaine, $recherche)>0){
    		return true;
    	}
    	else{
    		return false;
    	}
     
    }
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (existeChaine('png jpeg jpg gif bmp' , $line["fichier"]) == true){
    //C'est une image
    }
    else{
    // Ce n'est pas une image
     
    }
    Mais ca ne fonctionne pas, il me dit que ce n'est pas une image alors qu'il y en à

    Ou est l'erreur dans mon code ?

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Slt,

    Comme c'est là il va chercher la chaîne complète "png jpeg jpg gif bmp" dans le nom de ton fichier, alors que toi tu veux faire le test de la présence de chacune des extensions.
    A la limite tu pourrais modifier ta méthode existeChaine pour qu'elle splite la chaîne en entrée sur les espaces, boucler sur la liste obtenue, et renvoyer vrai dès qu'une des chaînes a été trouvée.

    Au passage histoire d'améliorer un chouilla le truc il faudrait même rechercher .png .jpeg .jpg .gif .bmp mais il y a sûrement mieux.

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function is_image($filename) {
       return (preg_match("/(.gif|.bmp|.png|.jpg|.jpeg)$/iU", $filename));
    }

    EDIT : petit code exemple, soyons fou :o

    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
    <?php
    function is_image($filename) {
       return (preg_match("/(.*)(.gif|.bmp|.png|.jpg|.jpeg)$/iU", $filename));
    }
    $files = array("blbbal.jpg", "fqsdfdsf.gif", "sqdfqsdf.gds", "erzer.bmp", "qsdfzae.jpeg", "sqdfsdf.png", "qsfsf.gif.sdf");
    foreach($files AS $v) {
    	if(is_image($v)) {
    		echo $v." est une image ! <br />";
    	} else {
    		echo $v." n'est pas une image ! <br />";
    	}
    }
    /*** RETOURNE ****/
    /*
    	blbbal.jpg est une image !
    	fqsdfdsf.gif est une image !
    	sqdfqsdf.gds n'est pas une image !
    	erzer.bmp est une image !
    	qsdfzae.jpeg est une image !
    	sqdfsdf.png est une image !
    	qsfsf.gif.sdf n'est pas une image ! 
    */
    ?>

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Ben c'est exactement ce que je cherchai.
    Je vais m'inspirer de ta fonction darkstar123456 , je la modifierais selon mes besoins

    Merci beaucoup

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

Discussions similaires

  1. Tester si une chaine est encodée en base64
    Par elitemedia dans le forum Langage
    Réponses: 2
    Dernier message: 20/06/2007, 22h51
  2. Tester si une chaine est un entier
    Par Tomimie dans le forum Delphi
    Réponses: 2
    Dernier message: 12/05/2007, 00h42
  3. [SQL] Tester si une chaine est au format date standard
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2006, 15h00
  4. Tester si une chaine est un nombre
    Par Grimdol dans le forum C
    Réponses: 15
    Dernier message: 24/06/2006, 12h44
  5. [langage] Comment tester si une chaine est vide
    Par |Bio dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 16h05

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