file_exists sur fichier avec espaces

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : file_exists sur fichier avec espaces

Re: file_exists sur fichier avec espaces

par lecer144 » 23 déc. 2011, 22:17

idem joyeux noël :)

Re: file_exists sur fichier avec espaces

par dix2 » 23 déc. 2011, 22:05

J't'en prie
Bonnes fêtes de fin d'année
@+
dix2

Re: file_exists sur fichier avec espaces

par lecer144 » 23 déc. 2011, 21:59

Bon la misère ...
J'ai trop honte ... en fait il y avait vraiment 2 espaces et effectivement si les espaces s’enchaînent, file_exists délire mais si il n'y a qu'une seul espace à la fois il fonctionne très bien ... j'ai pas eu de bol faut dire, je suis tombé sur le seul fichier à la C.. comme ça.
Merci encore pour ton aide en tout cas et désolé pour le dérangement ...

Re: file_exists sur fichier avec espaces

par lecer144 » 23 déc. 2011, 21:35

tout d'abord, merci pour ta réponse.
Alors j'avais déjà essayé quotes et guillemets mais ça ne changeait rien.
Là j'ai testé ta soluce avec implode et incroyable, ça me donne exactement la même chose avec 2x "\ " sur le 2ème espace.
Ensuite j'ai voulu vérifier si après être arrivé à régler ce problème de 2 x "\ " ça allait au moins fonctionner, alors j'ai testé le file_exists en écrivant en dur le nom du fichier "façon linux" avec ces "\ " et là, grosse déception, ça ne donne rien non plus donc finalement je suppose que ce n'est pas comme ça que le serveur gère les espaces. J'essaye de voir comment faire un dir pour voir exactement ce que ces fichiers avec espaces sont gérés mais ça n'a pas l'air simple ça non plus :(

Re: file_exists sur fichier avec espaces

par dix2 » 23 déc. 2011, 20:08

salut,

tout d'abord, dans ton str_replace, mets plutôt des simples quotes que des doubles c'est-à-dire :
écris str_replace(' ','\ ',$nom_fichier) au lieu de str_replace(" ","\ ",$nom_fichier)
car les doubles quotes sont utilisées quand il y a des caractères spéciaux échappés par le symbole \
exemple : "\t" est interprété par PHP comme une chaîne d'un seul caractère : le caractère tabulation
alors que '\t' est interprété par PHP comme une chaîne de 2 caractères : \ suivi de la lettre t
ceci dit, dans str_replace(" ","\ ",$nom_fichier), l'espace après le \ n'est pas un caractère spécial donc PHP interprète bien "\ " comme une chaîne de 2 caractères

Ensuite, en ce qui concerne la fonction str_replace($search, $replace, $subject), elle peut parfois avoir un comportement bizarre si $search est une sous-chaîne de $replace, ce qui est le cas ici
Par conséquent, remplace str_replace(" ","\ ",$nom_fichier) par :
implode('\ ', explode(' ', $nom_fichier))

@+
dix2

file_exists sur fichier avec espaces

par lecer144 » 23 déc. 2011, 19:13

Bonjour,

je me retrouve avec des fichiers qui contiennent des espaces sur un serveur Linux ... bon je sais que ce n'est pas bien mais malheureusement, et bien il va falloir que je fasse avec ...
il faudrait que je fasse un test >> si "fichier existe".
Mais file_exists () déconne à cause des espaces et @fopen () aussi
Puisque Linux semble gérer les espaces par des "\ " alors, pour mettre le nom du fichier au format attendu, j'ai tenté un str_replace(" ","\ ",$nom_fichier) mais curieusement ça ne fonctionne qu'à moitié ...
sur le 1er espace, impeccable et le " " est remplacé par "\ " mais sur l'espace suivant le "\ " espéré se retrouve doublé et ca donne "\ \ " et puis à nouveau sur le 3ème, ça fonctionne bien.

ABE CX-243 (KIT U9618)
devient >> ABE\ CX-243\ \ (KIT\ U9618)

Une petite idée plz ?
par avance merci.