PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > php.general > Problem Reading File when Name contains "?"
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Problem Reading File when Name contains "?"

Réponse
 
LinkBack Outils de la discussion
Vieux 08/03/2008, 23h22   #1
PHPBABY3
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Problem Reading File when Name contains "?"

Problem Reading File when Name contains "?"

I am trying to access all of the files in a directory, using
$a=opendir($dir) ; while ($file=readdir($a)) and
$b=file_get_contents($dir."/".$file). However, when $file contains
characters chr(63 or 164 or 186) $b is "". I tried substituting each
of the characters chr(0 to 255) for a single chr(63) i.e. "?" in file
names but none of the resulting names created a value for $b other
than "".

How do I read these file contents?

P -
  Réponse avec citation
Vieux 23/03/2008, 11h57   #2
PHPBABY3
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problem Reading File when Name contains "?"

Here are suggestions that I have received from various sources and am
trying myself (to the extent that I know what he's talking about):

1. ? is a special symbol that shouldn't be used within a file name.
As for other symbols - 164 might require you to set a proper non-
unicode symbol table, and other symbols are just garbage, as far as i
see the ASCII table.

2. I think this is a trouble that has to do with the file system you
are using, some file systems requires prepending "\\?\" to the file
name to be able to get around it's normal file name checks.

3. If your code is working for normal files, odds are good that you
need to escape these special characters before you can read them.
Escaping these is dependent on your operating system, so the character
you'll use depends on the system you're running. If your system uses
the backslash to escape characters (ie, Linux), try writing these
characters with a leading backspace, ie:
foreach(glob("$dir/*") as $eachFile) {
$eachFile = preg_replace('/['.chr(63).chr(164).chr(186).']/', '\\\
\\\0', $eachFile);
print "$eachFile : ".strlen(file_get_contents($eachFile))."\n"; }

4. Question mark is illegal in file names on both Windows and Unix...
It is illegal on Windows, but it is quite valid in Unix. Forward
slash / is the only character that is invalid in a Unix file name.
Try replacing "?" with "%3F"

5. Try this one, just to explore some. echo(basename
($PHP_SELF)."<br>"); // returnes filename.php

6. You will need to construct a routine to preface the file read or to
actually dig into the PHP library and modify the base module for that
read.

7. Could we copy the original file to a standard name, or rename it,
without causing an error? I will look and see what ways the different
functions have of handling filenames and
pathing...
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 04h04.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,10073 seconds with 10 queries