带有字符列表的PHP ltrim行为

时间:2012-01-29 04:21:55

标签: php trim

我试图使用php ltrim函数从字符串中剥离一些起始部分。它工作正常,直到它在冒号后得到一个i字符:。如果它在冒号后发现我只是忽略了i字符。我知道它可以用substr或任何其他方式完成,但我想知道它为什么会发生修剪。例如。

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

上述功能将返回bob@example.com

但如果我把我放在冒号之后......例如

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

这个将返回nfo@example.com

有人可以解释发生了什么吗?

2 个答案:

答案 0 :(得分:7)

ltrim的第二个参数是要从字符串左侧删除的字符列表。

如果你做了

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

你会得到一个空字符串作为返回值。

请改为尝试:

<?php
    $email = 'mailto:bob@example.com';
    $fixedEmail = substr($email, 0, 7) == 'mailto:' ? substr($email, 7) : $email;
?>

答案 1 :(得分:0)

ltrim()的工作方式不同,它会修剪左边的所有给定字符,直到找到不匹配的字符。因此,当您在电子邮件地址中放置冒号后面的“i”时,第一个不匹配的字符为“n”,因此它会修剪它之前的所有内容。

如果您的意图是删除“mailto:”,您可以尝试:

str_replace('mailto:', '', 'mailto:info@example.com');
相关问题