Windows Vista Tips

Windows Vista Tips > Newsgroups > Windows Vista General Discussion > Problem Reading File when Name contains character numbers 63 ("?"),164, 186, 243, 248

Reply
Thread Tools Display Modes

Problem Reading File when Name contains character numbers 63 ("?"),164, 186, 243, 248

 
 
PHPBABY3
Guest
Posts: n/a

 
      03-17-2008

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 63 ("?"), 164, 186, 243 or 248 $b is "". I tried
substituting each of the characters chr(0 to 255) for a single "?" in
file names but none of the resulting names created a value for $b
other than "".

How do I read these file contents?

P -
 
Reply With Quote
 
 
 
 
PHPBABY3
Guest
Posts: n/a

 
      03-23-2008
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...
 
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
"Save As" file extension problem Abe Windows Vista General Discussion 6 05-08-2008 09:51 AM
Vista not wotking with "My Computer" or "Control Panel", "Screen Saver" Platebanger Windows Vista General Discussion 6 02-05-2008 01:54 PM
Changing "mailto" protocol via registry--no "clients" file under HKEY_USERS Cyn Windows Vista Mail 2 03-01-2007 12:11 PM
WM5 Sync with Vista "Windows Calender", "Contacts", and "Mail" Tony Windows Vista General Discussion 1 02-16-2007 11:20 PM
problem after installing windows vista... asking for ".cab" file divine323 Windows Vista General Discussion 1 07-10-2006 06:27 PM



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59