php刪除字符串末尾子字符

今天想處理下原先由於失誤而多加的子字符,如 linzimu.apk.apk。

    起初使用的是rtrim,其實這個函數是trim的衍生,trim是去除收尾,而rtrim是去除字符末尾,還有一個是去除字符頭部的是ltrim。

    使用如下代碼:

[php] 
$out = rtrim($in,'.apk'); 

輸出的結果是linzimu,那好我想,那我就直接再
[php] 
$out .= '.apk' 
就是我想要的東西瞭

後來保險起見,在上傳伺服器前都要檢查下文件是否存在。結果2W多的數據,有4k是不存在的。

找瞭半天終於找到原因瞭,其實是自己沒有細看PHP手冊。

ltrim 後面是 charlist 而不是 $substring

也就是說 後面是字符列表 不一定按照這個順序,

比如linzimua,apk,apk中的a就會被去除掉。

去除的原則是,一直都匹配一直去除,知道第一個不匹配為止。

所以立馬改用另一種方法,可以使用

思路1:所可以變化下思維去除字符串,可以變為替換字符串,替換為NULL

使用
[php] 
substr_replace($test,'',-4); 

思路2:也可以變為,將自己想要的字符串作為子字符串提取出來
[php] www.2cto.com
$test = "lin.apk.apk"; 
preg_match("#^((.+)\.(.+))\.#i", $test,$m); 
echo $m[1]; 

作者:wolinxuebin

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *