Edit report at https://bugs.php.net/bug.php?id=60992&edit=1
ID: 60992 Comment by: a...@php.net Reported by: elie29 at gmail dot com Summary: Trim / rtrim bug when we need to delete extension Status: Open Type: Bug Package: Strings related Operating System: windows PHP Version: 5.3.10 Block user comment: N Private report: N New Comment: consider this to achieve your goal: basename('hello.js', '.js') Previous Comments: ------------------------------------------------------------------------ [2012-02-06 14:03:28] anon at anon dot anon This is the correct logic for the trim functions. As stated in the documentation, the second parameter is a list of characters, not a solid string to test for verbatim. Hence `rtrim('users.php', 'ph.'))` is also 'users'. Try something like this instead: function rtrim_str($str, $fragment) { if (substr($str, -strlen($fragment)) === $fragment) $str = substr($str, 0, -strlen($fragment)); return $str; } ------------------------------------------------------------------------ [2012-02-06 13:46:14] elie29 at gmail dot com Description: ------------ If we need to delete from a file name its extension using trim or rtrim function, the return value is uncorrect when your file name is ended with an 's' characters. Exemple : rtrim('users.js', '.js'); => will return user instead of users Test script: --------------- var_dump(rtrim('users.js', 'js')); // users. OK var_dump(rtrim('users.', '.')); //users OK var_dump(rtrim('users.js', '.js')); // user instead of users KO var_dump(trim('users.php', '.php')); // user instead of users KO var_dump(rtrim('correct.js', '.js')); //correct OK var_dump(trim('ssss.js', '.js')); // empty string instead of ssss KO Expected result: ---------------- var_dump(rtrim('users.js', 'js')); // users. var_dump(rtrim('users.', '.')); //users var_dump(rtrim('users.js', '.js')); // users var_dump(trim('users.php', '.php')); // users var_dump(rtrim('correct.js', '.js')); //correct var_dump(trim('ssss.js', '.js')); // sss ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=60992&edit=1