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截断字符后查找到一段代码。
热点内容