Jump to content

[RESOLU] Problème avec la fonction array()


domdas

Recommended Posts

Bonjour,

Je n'arrive pas à récupérer correctement les données d'un champ de configuration afin de les traiter dans un tableau avec la fonction array. Il s'agit d'un module d'upload.

Voici les valeurs du champ UPLOADER_AUTH_EXT à traiter : ".pdf", ".jpg", ".jpeg", ".eps", ".ai", ".psd", ".tif"

Et si je fais un echo Configuration::get('UPLOADER_AUTH_EXT'), j'obtiens bien : ".pdf", ".jpg", ".jpeg", ".eps", ".ai", ".psd", ".tif"

Maintenant si j'utilise ma variable Configuration::get('UPLOADER_AUTH_EXT') dans une fonction array, j'obtiens FALSE alors que si je la remplace par la chaine qu'elle est censée afficher ".pdf", ".jpg", ".jpeg", ".eps", ".ai", ".psd", ".tif", j'obtiens TRUE.

Voici un exemple de mon code :

$b = array(Configuration::get('UPLOADER_AUTH_EXT'));
if (in_array(".jpg", $){
echo "TRUE";
}else{
echo "FALSE";
}



J'ai essayé de filtrer Configuration::get('UPLOADER_AUTH_EXT') avec addslashes() ou htmlentities() et rien n'y fait !!!

Pouvez-vous m'aider ?
Par avance merci.
Dominique

Link to comment
Share on other sites

salut,

En copiant ton code, j'ai effectivement un false, mais j'ai surtout $b vide. Dans la table configuration, je n'ai rien qui ressemble à UPLOADER_AUTH_EXT. où as tu eu vu cette variable de configuration ?


Vu qu'il s'agit d'un module d'upload, je suppose que c'est toi qui as créé cette variable, donc je vais plutôt te conseiller de regarder (et de copier-coller ici pendant que tu y es) le résultat de ceci :

$b = array(Configuration::get('UPLOADER_AUTH_EXT'));
print_r($;
echo "

RESULT: ".((in_array(".jpg", $)?"TRUE":"FALSE");

Link to comment
Share on other sites

Pour être complet, voici l'affichage du résultat :

Array ( [0] => ".pdf", ".jpg", ".jpeg", ".eps", ".ai", ".psd", ".tif" )
RESULT: FALSE

En clair, la fonction n'arrive pas à séparer les valeurs de la variable UPLOADER_AUTH_EXT pourtant l'affichage semble correct.

Link to comment
Share on other sites

oki, donc c'est normal.

la fonction in_array($a, $B) test si un élément de $b est exactement $a.

Toi, tu as un seul élement dans ta liste, et c'est la chaine de caractère : ' “.pdf”, “.jpg”, “.jpeg”, “.eps”, “.ai”, “.psd”, “.tif” ' qui est différente de ".jpg ", donc ça renverra false.

Tu as plusieurs solutions, en voici une parmi d'autres :

Dans ta variable que tu as sans doute faite toi même arrange toi pour que le retour du print_r soit :

Array ( [0] => .pdf|.jpg|.jpeg|.eps|.ai|.psd|.tif )

ce qui chez moi pour le test correspond à faire :

$b = array('.pdf|.jpg|.jpeg|.eps|.ai|.psd|.tif');




puis test avec ceci :

$b = array(Configuration::get('UPLOADER_AUTH_EXT'));
print_r($;
echo "

RESULT: ".((in_array(".jpg", explode('|', $b[0])))?"TRUE":"FALSE");



On pourrais aussi passer par la fonction strpos qui décomposera le premier élément de $b pour en trouver la chaine de caractère sans faire la décomposition de explode et le in_array, il y a toujours plusieurs façon de faire la même chose.

Fait attention, tu avais fait plusieurs erreurs dans ton code à la base :

in_array(".jpg", $

ne test pas la chaine de caractère ".jpg" mais .jpg. il aurait fallu mettre :

in_array('".jpg"', $



Aussi, il faut se méfier des extensions : .JPG est aussi une image jpeg, et un fichier peux très bien être avec une extensions ne correspondant pas à son type. Il conviendrais de ne pas tester les extensions mais le type du fichier obtenu dans la variable $_FILES de ton formulaire d'upload.

Link to comment
Share on other sites

  • 1 month later...
[Resolu] Super tout fonctionne à merveille !!! Un grand Merci SotEW


Hi Dominica:
I need this solution. Can you show me how to do it, am not very sure to amend it. Where to start and where to amend, can you please guide me? If you can help me, I'd be enormously grateful.

Regards,
a_sun
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...