範例一、使用 substr 與 strlen 函式去除最後一個字元
<?php
$TestString="ABCDEF";
echo substr($TestString,0,-1);
?>
以上範例輸出$TestString="ABCDEF";
echo substr($TestString,0,-1);
?>
ABCDE
因為英文字元與繁體中文字元的字串長度有所差異,繁體中文的一個文字長度為英文單字的兩倍,所以範例中,使用 substr 函式可以直接將起始參數設定為 0,長度參數設定為 -1,代表擷取整段字串,然後將最後一個字串移除,輸出的時候就沒有最後一個字元了,關於 PHP 的 substr 函式的參數用法,請參閱《php substr() 函數取得部分字串,可設定字串長度》篇福的講解。雖然運用 substr 函式的方式很便利,但如果用在繁體中文的情況下,就有可能出現字串移除不完全的狀況,解決方案是將範例的第二行改寫為『echo substr($TestString,0,strlen('字')*-1);』這樣,小括號內的"字"可以改為其他的繁體中文字或符號,透過 strlen 函式計算出字串的長度,搭配起 substr 函式,製作出從字尾移除一個繁體中文字元的效果,接著我們可以看看使用 substr_replace 函式的取代技巧,也可以很快的做出這樣的效果。
範例二、透過 substr_replace 取代最後一個字元
<?php
$TestString="ABCDEF";
echo substr_replace($TestString,'',-1);
?>
以上範例輸出$TestString="ABCDEF";
echo substr_replace($TestString,'',-1);
?>
ABCDE
與範例一的計算字串後並從字尾移除固定長度字串的原理不同,substr_replace 函式是從字串的某個地方開始,根據設定的字串長度,用所設定的字元取代原本的字元,以範例中這樣的寫法來說,代表的是從最後面開始向前方計算一個字元,並將其取代為空值,自然而然就將最後一個字元移除了,這樣的方式在處理英文字串非常簡潔迅速,但處理中文字串也會面臨與範例一相同的問題,所以在處理繁體中文字時,範例中的第二行可以改寫為『echo substr_replace($TestString,'',strlen('字')*-1);』這樣,也是用 strlen 函式先計算好文字的長度後,再開始取代的動作,最終獲得同樣的結果,關於 substr_replace 函式的參數用法請參閱:PHP substr_replace(編輯中)。延伸閱讀