|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2018-12-04 19:32 UTC] 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
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 10:00:02 2025 UTC | 
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" }