带有字符列表的PHP ltrim行为

Has*_*avi 3 php trim

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

ltrim('mailto:bob@example.com','mailto:');
Run Code Online (Sandbox Code Playgroud)

上面的函数将返回bob@example.com

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

ltrim('mailto:info@example.com','mailto:');
Run Code Online (Sandbox Code Playgroud)

这个将返回nfo@example.com

谁能解释一下发生了什么?

Ale*_*rge 7

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

如果你这样做了

<?php
    ltrim('lllliiiiaaaaaatttttt', 'mailto:');
?>
Run Code Online (Sandbox Code Playgroud)

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

试试这个:

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