Bug->Doc #77239 [Opn->Ver]: pathinfo strips umlauts only at the beginning
| From: | cmb@php.net | Date: | Thu, 25 Mar 2021 16:09:15 +0000 |
| Subject: | Bug->Doc #77239 [Opn->Ver]: pathinfo strips umlauts only at the beginning | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-18669@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=77239&edit=1
ID: 77239
Updated by: cmb@php.net
Reported by: stephan dot eicher at check24 dot de
Summary: pathinfo strips umlauts only at the beginning
-Status: Open
+Status: Verified
-Type: Bug
+Type: Documentation Problem
Package: *Directory/Filesystem functions
Operating System: Linux
PHP Version: 7.1.24
Block user comment: N
Private report: N
New Comment:
I assume that you get exactly the same output with basename(), for
which the documentation already states:
| If path contains characters which are invalid for the current
| locale, the behavior of basename() is undefined.
So, not a bug, but needs to be documented for pathinfo() as well.
Previous Comments:
------------------------------------------------------------------------
[2019-02-05 13:53:07] alex dot a dot pott at gmail dot com
This problem seems to be OS dependent. If I run the following script I get different results.
Locally I'm running on MacOS Mojave use homebrew for PHP 7.2.
Test script:
---------------
<?php
setlocale(LC_ALL, 'C');
var_dump(pathinfo('Ã Ã Ã
à äöüåøhello.txt'));
Output using docker:
---------------
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp
php:7.2-cli php test-locale-pathinfo.php
array(4) {
["dirname"]=>
string(1) "."
["basename"]=>
string(29) " Ã Ã
à äöüåøhello.txt"
["extension"]=>
string(3) "txt"
["filename"]=>
string(25) " Ã Ã
à äöüåøhello"
}
Output locally:
---------------
php test-locale-pathinfo.php
array(4) {
["dirname"]=>
string(1) "."
["basename"]=>
string(31) "Ã Ã Ã
à äöüåøhello.txt"
["extension"]=>
string(3) "txt"
["filename"]=>
string(27) "Ã Ã Ã
à äöüåøhello"
}
------------------------------------------------------------------------
[2018-12-04 19:32:07] stephan dot eicher at check24 dot de
Description:
------------
Pathinfo will strip umlauts from the filename beginning if locale is not correct set.
The strange thing is that it will not strip other umlauts for example if they are in the middle of
the string.
I would expect that it strips all umlauts or none but not that it will strip them from the beginning
but not in the string.
Test script:
---------------
<?php
setlocale(LC_ALL, 'C');
echo pathinfo('änderungs', PATHINFO_FILENAME) . PHP_EOL;
echo pathinfo('bestandübertragung', PATHINFO_FILENAME) . PHP_EOL;
Expected result:
----------------
änderungs
bestandübertragung
Actual result:
--------------
nderungs
bestandübertragung
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77239&edit=1