Hasanavi
Hasanavi

Reputation: 8625

PHP ltrim behavior with character list

I was trying to achieve stripping off some beginning part from a string using php ltrim function. It works fine until it get a i character after colon : . if it find i after colon it simply ignore the i character. I know it can be done with substr or any other way but I want to know why its happening with trim. For example.

ltrim('mailto:[email protected]','mailto:');

the above function will return [email protected]

but if I put i after colon.. for example

ltrim('mailto:[email protected]','mailto:');

this one will return [email protected]

Can anybody explain what is happening?

Upvotes: 3

Views: 3114

Answers (2)

Alec Gorge
Alec Gorge

Reputation: 17390

The second argument to ltrim is a list of characters to remove from the left side of the string.

If you did

<?php
    ltrim('lllliiiiaaaaaatttttt', 'mailto:');
?>

You would get an empty string as the return value.

Try this instead:

<?php
    $email = 'mailto:[email protected]';
    $fixedEmail = substr($email, 0, 7) == 'mailto:' ? substr($email, 7) : $email;
?>

Upvotes: 9

Abhay
Abhay

Reputation: 6645

ltrim() works differently that it trims all the given characters from the left until a non-matching character is found. Therefore when you put an "i" after colon in the email address, the first unmatched character is "n" and so it trims everything before it.

If your intent is to remove "mailto:", you may simply try:

str_replace('mailto:', '', 'mailto:[email protected]');

Upvotes: 0

Related Questions