php截斷字元串
發布時間: 2025-06-20 07:09:00
『壹』 php字元串的截取
1樓的代碼有點問題雹困瞎 截取中文會出現問題 比如剛好是9個字母1個漢字 你截源空取10位的話 就會出現尺皮亂碼 所以截取含中文字元串時要用mb_substr代替substr
for($i=0;$i<strlen($str);$i=$i+10){
$string=mb_substr($str,$i,10);
echo $string."<br>";
}
『貳』 php截取字元串函數
PHP中,字元串截取是非常常見的操作。通過使用substr函數,我們可以按照指定位置或長度獲取字元串的一部分。以下是一些示例:
首先,substr函數用於從指定位置開始取字元,如從字元串"ABCDEFGHIJKLMNOPQRSTUVWXYZ"的第5個字元開始取,直到字元串結束,結果為"BZYX"。
接著,可以指定截取的長度,如從第9個字元開始取4個字元,得到"DEFG"。另一個例子是取倒數第5個字元,這會返回"V"。
對於倒數字元的截取,substr函數同樣適用。從倒數第8個字元開始取4個字元,結果為"力選水女";而從倒數第8個字元開始取到倒數第6個字元(因為長度為2),輸出為"力選.. "
在處理中英文混合的字元串時,為了防止亂碼,可以使用自定義函數substr_cut。這個函數會截取全形和半形字元混合的字元串,如果超過指定長度,會截取到出現非英文字元的位置,並用".."代替後續內容。
『叄』 如何利用PHP來截取一段中文字元串而不出現亂碼
/*
功能:截取全形和半形混合的字元串以避免亂碼
參數:
$str_cut 需要截斷的字元串
$length允許字元串顯示的最大長度
*/
functionsubstr_cut($str_cut,$length=30){
if(strlen($str_cut)>;$length){
for($i=0;$i<$length;$i++)
if(ord($str_cut[$i])>;128) $i++;
$str_cut=substr($str_cut,0,$i)."...";
}
return$str_cut;
}
說明:
程序的關鍵語句是:
for($i=0;$i<$length;$i++)
if(ord($str_cut[$i])>;128) $i++;
$str_cut=substr($str_cut,0,$i)."...";
如果字元的ASCII碼大於128,說明當前字元和下一個字元是屬於一個漢字的。
則,$i++跳過對下一個字元的判斷。
再結合循環中的$i++,實際上,當遇到一個漢字時,$i就會加2,從而正確的跳過漢字。
最終實現的效果是,$i變數指向的要麼是半形的字元,要麼是全形漢字的首字元,不會指向
全形漢字的第二個字元,所以,當$i>;=$length時,循環結束,使用
$str_cut=substr($str_cut,0,$i)."...";截取字元時自然也就不會出現亂碼了。
本人在寫一個程序時需要利用PHP從一段字元串中截取指定長度的一段字元下來。以前在寫ASP的時候,參考動網的程序寫過類似的程序,不過,還沒用PHP寫過。
想偷懶,看有不有現成的代碼可以用。於是,在GOOGLE中輸入:PHP截斷字元後查找到一段代碼。
熱點內容