PHP ltrim行为与字符列表


PHP ltrim behavior with character list

我试图使用php-ltrim函数从字符串中剥离一些开头部分。它工作正常,直到它在冒号后得到一个i字符:。如果它在冒号后找到i,它只需忽略i字符。我知道它可以用substr或任何其他方式完成,但我想知道为什么用trim会发生这种情况。例如

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

以上函数将返回bob@example.com

但是如果我把I放在冒号后面。。例如

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

这个会回来的nfo@example.com

有人能解释一下发生了什么吗?

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

如果你做了

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

您将得到一个空字符串作为返回值。

试试这个:

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

ltrim()的工作方式不同,它从左边修剪所有给定的字符,直到找到不匹配的字符。因此,当你在电子邮件地址的冒号后面放一个"i"时,第一个不匹配的字符是"n",所以它会修剪前面的所有字符。

如果你的意图是删除"mailto:",你可以简单地尝试:

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