PHP ltrim behavior with character list

∥☆過路亽.° 提交于 2019-11-26 11:34:13

问题


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:bob@example.com\',\'mailto:\');

the above function will return bob@example.com

but if I put i after colon.. for example

ltrim(\'mailto:info@example.com\',\'mailto:\');

this one will return nfo@example.com

Can anybody explain what is happening?


回答1:


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:bob@example.com';
    $fixedEmail = substr($email, 0, 7) == 'mailto:' ? substr($email, 7) : $email;
?>



回答2:


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:info@example.com');


来源:https://stackoverflow.com/questions/9050917/php-ltrim-behavior-with-character-list

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!