Rechercher : dans
Par :

[PHP] - Apostrophe qui pose problème...

Dernière réponse le 24 avr 2008 à 15:56:32 wenijah, le 20 jun 2007 à 15:44:03 
 Signaler ce message aux modérateurs

Bonjour tout le monde!

Alors voilà, j'ai un petit souci d'apostrophe que je dois résoudre sans utiliser le addslashes et avec str_replace, cela ne fonctionne pas ou...

..comme dans l'exemple ci-dessous pour un fichier uploadé...

exemple de titre de fichier : it's crazy.zip

$tep = basename($_FILES['Filedata']['name']);
$var1 = array("'");
$var2 = array("_");
$tep = str_replace($var1, $var2, $tep);


$tep, qui correspond à la donnée de sortie du fichier uploadé, apparaîtra comme "_s crazy.zip" au lieu du résultat voulu "it_s crazy.zip"

Grace à ce résultat, on peut déduire que le problème ne se pose pas après que le script renomme le fichier mais avant!...

Comment faire pour récupérer le début du texte, en l'occurence, "it" ?

Merci d'avance!!!

~W~

Configuration: Windows XP
Firefox 2.0.0.4

Meilleures réponses pour « [PHP] Apostrophe qui pose problème... » dans :
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Les cookies et les en-têtes HTTP VoirLes en-têtes HTTP Lors de chaque échange par le protocole HTTP entre votre navigateur et le serveur, des données dîtes d'en-têtes contenant des informations sur les données à envoyer (dans le cas d'une requête) ou envoyées (dans le cas d'une...

1

Arcanis, le 20 jun 2007 à 15:56:44

Essaye de faire un stripslashes() au nom du fichier avant de le faire passer à la moulinette de basename().
Je pense que les apostrophes magiques sont tout simplement activées, ce qui fait que le nom de fichier devient:
"it\'s crazy.zip"
Basename coupe à chaque occurence de "/" ou de "\". Par conséquent, ça te donne:
"'s crazy.zip"
Enfin, ta chaine de remplacement remplace l'apostrphe par un underscore:
"_s crazy.zip"

Juste une question: pourquoi effectuer un basename sur un nom de fichier?

Répondre à Arcanis

2

wenijah, le 20 jun 2007 à 16:29:23

Whhaa.. le basename!! La solution de mon problème..

Honnêtement, je ne savais pas trop comment utiliser le basename, je voulais simplement être sûr de mon titre source pour ensuite le remanier.. Ce qui est maintenant chose faite!..

Et je m'étais un peu emmêlé les pinceaux avec 2 variables ($tep qui est le titre original et qui doit le rester et $sep qui est le titre modifié accessible au téléchargement).. Le travail devait être fait sur $sep et non pas $tep!

Merci pour la lumière ! =)

~W~

Répondre à wenijah

3

 alexandre, le 24 avr 2008 à 15:56:32

J'ai eu un problème équivalent avec les apostrophes.

en fait dans mon php au moment de déplacer le fichier du répertoire temporaire vers mon répertoire de travail, je fait le stripslashes(). Je n'ai pas encore eu de retour de la MOA, ça a l'air de fonctionner avec un peu près tout les caractères.

Si ça peut aider, voici un extrait de mon "algo" :

if($formVerifOk){
$destination=$chemin_destination.stripslashes($_FILES['xxx']['name']);
if(move_uploaded_file($_FILES['xxx']['tmp_name'], $destination)){
// ok
}else{
$listeErreurs[] = "message je suis pas content "
$formVerifOk = false; // annulation form est ok !
}
}

Répondre à alexandre
Collection CommentÇaMarche.net