在php中意外输出ltrim

Can anybody explain this unusual output of ltrim

var_dump(ltrim('/btcapi/participation/set-user-event-participation','/btcapi'));

rticipation/set-user-event-participation //output

While expected output has

/participation/set-user-event-participation

Use str_replace if you are sure this is the only one occurence in your string.

$str = '/btcapi/participation/set-user-event-participation';
echo str_replace('/btcapi', $str); // returns: '/participation/set-user-event-participation'

Or regex if you need replace/remove just the first at the beginning of string.

$str = '/btcapi/participation/set-user-event-participation';
preg_replace ('~^/btcapi~', '', $str);

The trim characters are read as individuals, not as a String.

It just replaces the second / for example because it is a part of the characters.

Just use str_replace or a custom loop.

RTM: http://php.net/ltrim

the second argument is a character MASK, e.g. characters you want to strip. CHARACTERS, not STRING.

php > $foo = 'abc123';
php > echo ltrim($foo, 'abpq');
c123
php > echo ltrim($foo, 'a1');
bc123
  ^---not stripped, because 'bc' are not in the mask.
php >

PHP will search strip all characters from the left of the string, based on the characters in the mask, until it encounters a character NOT in the mask.