|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2006-06-28 10:46 UTC] andreas dot schmidt at stasy dot de
Description: ------------ When pathinfo() is passed an argument which contains special characters like german Umlaute ??? or french ?, the return array contains wrong informations. In case of special characters in a directory name, the value for the key "basename" will be the name of the parent directory of this directory. The script was testet in UTF-8 and ISO-8859-1 with same results. This bug occured at least with a) a 'hand rolled' PHP 5.1.4 on Apache 1.3.36 b) PHP 5.1.2 on Apache 2.0.55 (Ubuntu 6.06 package) c) PHP 5.0.3 on Apache 2.0.53 (SuSE Linux 9.3) The problem does not occur when the script is run in a Win2k environment. Furthermore it seems to be a PHP 5 bug as it did not occur when run with PHP4. Reproduce code: --------------- <?php $dir = 'demo/testdir/????'; $pinfo = pathinfo($dir); echo $pinfo['basename']; ?> Expected result: ---------------- ???? Actual result: -------------- testdir PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 05:00:01 2025 UTC |
There still seems to be a regression with utf8 and PHP-5: mike@honeybadger:~$ php -r 'var_dump(pathinfo("/usr/bin/?ggi")); echo `printenv|egrep "LANG|LC"`;'; array(2) { ["dirname"]=> string(8) "/usr/bin" ["basename"]=> string(3) "ggi" } LANG=en_GB.UTF-8 LANGUAGE=en_GB:en mike@honeybadger:~$ php -r 'setlocale(LC_ALL, getenv("LANG")); var_dump(pathinfo("/usr/bin/?ggi")); echo `printenv|egrep "LANG|LC"`;'; array(2) { ["dirname"]=> string(8) "/usr/bin" ["basename"]=> string(3) "ggi" } LANG=en_GB.UTF-8 LANGUAGE=en_GB:en mike@honeybadger:~$ php -r 'var_dump(pathinfo("/usr/bin/????")); echo `printenv|egrep "LANG|LC"`;'; array(2) { ["dirname"]=> string(8) "/usr/bin" ["basename"]=> string(3) "bin" } LANG=en_GB.UTF-8 LANGUAGE=en_GB:en Same on latin1 terminal: s1-iw:~$ php -r 'var_dump(pathinfo("/usr/bin/?ggi")); echo `printenv|egrep "LANG|LC"`;'; array(2) { ["dirname"]=> string(8) "/usr/bin" ["basename"]=> string(4) "?ggi" } LC_ALL=en_US.iso-8859-1 LANG=en_US.iso-8859-1 s1-iw:~$ php -r 'setlocale(LC_ALL, getenv("LANG")); var_dump(pathinfo("/usr/bin/?ggi")); echo `printenv|egrep "LANG|LC"`;'; array(2) { ["dirname"]=> string(8) "/usr/bin" ["basename"]=> string(4) "?ggi" } LC_ALL=en_US.iso-8859-1 LANG=en_US.iso-8859-1 s1-iw:~$ php -r 'var_dump(pathinfo("/usr/bin/????")); echo `printenv|egrep "LANG|LC"`;'; array(2) { ["dirname"]=> string(8) "/usr/bin" ["basename"]=> string(4) "????" } LC_ALL=en_US.iso-8859-1 LANG=en_US.iso-8859-1 Everything also works well with PHP-4 in an utf8 console.