今天想處理下原先由於失誤而多加的子字符,如 linzimu.apk.apk。
起初使用的是rtrim,其實這個函數是trim的衍生,trim是去除收尾,而rtrim是去除字符末尾,還有一個是去除字符頭部的是ltrim。
使用如下代碼:
[php]
$out = rtrim($in,'.apk');
$out = rtrim($in,'.apk');
輸出的結果是linzimu,那好我想,那我就直接再[php] view plaincopyprint?
$out .= '.apk'
$out .= '.apk'
就是我想要的東西了
後來保險起見,在上傳服務器前都要檢查下文件是否存在。結果2W多的數據,有4k是不存在的。
找了半天終於找到原因了,其實是自己沒有細看PHP手冊。
ltrim 後面是 charlist 而不是 $substring
也就是說 後面是字符列表 不一定按照這個順序,
比如linzimua,apk,apk中的a就會被去除掉。
去除的原則是,一直都匹配一直去除,知道第一個不匹配為止。
所以立馬改用另一種方法,可以使用
思路1:所可以變化下思維去除字符串,可以變為替換字符串,替換為NULL
使用
[php]
substr_replace($test,'',-4);
substr_replace($test,'',-4);
思路2:也可以變為,將自己想要的字符串作為子字符串提取出來
[php]
$test = "lin.apk.apk";
preg_match("#^((.+)\.(.+))\.#i", $test,$m);
echo $m[1];