2012-01-29 39 views
3

我試圖實現剝離一些使用php ltrim函數的字符串的一些開始部分。它能正常工作,直到它冒號後得到一個i字符:。如果它在冒號後找到我,它就會忽略我的角色。我知道它可以用substr或其他任何方式完成,但我想知道它爲什麼會發生修剪。例如。PHP ltrim行爲與字符列表

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

上述函數將返回[email protected]

,但如果我把我冒號後..例如

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

這一項將返回[email protected]

有人可以解釋發生了什麼?

回答

7

ltrim的第二個參數是要從字符串左側移除的字符列表。

如果你沒有

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

你會得到一個空字符串作爲返回值。

試試這個:

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

偉大的答案,一般我使用的功能的preg_replace來代替。 – Lake 2012-01-29 05:16:35

0

LTRIM()的工作方式不同直到不匹配的字符找到它修剪從左邊所有給定的字符。因此,當你在電子郵件地址後面加上冒號「i」時,第一個不匹配的字符是「n」,因此它會修整前面的所有內容。

如果你的意圖是消除「的mailto:」,你可以簡單地嘗試:

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

這並不總是一個好主意..例如...如果我想從Dr manDrake Dracula中刪除Dr,那麼如果我做了'str_replace('Dr','','' manDrake Dracula博士');' – Gogol 2016-03-07 09:32:19