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

Reply via email to