很多人写程序的时候都会遇到截取字符串的时候。。当然如果是英文的字符串我们直接可以用substr来截取也不会出现任何问题。但是中文却是不行。因为中文字符所占的字节不一样。。直接截取会出现乱码:那么要如何解决呢:
网站是英文:
采用 substr() 函数截取。
用法:substr() 函数返回字符串的一部分。
语法:substr(string,start,length)
注释:如果 start 是负数且 length 小于等于 start,则 length 为 0。
例子:
<?php
$rest = substr ("abcdef", 3); // returns "ef"
$rest = substr ("abcdef", 1, 5); // returns "bcdef"
?>
采用UFT-8的编码的中文网站一个汉字将占3个字节:
function utf($str, $start, $len) {
$strlen = $start + $len;
for($i = $start; $i < $strlen;) {
if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) {
$tmpstrs .= substr ( $str, $i, 3 );
$i=$i+3; // 变量自加3
} else{
$tmpstrs .= substr ( $str, $i, 1 );
$i++;
}
}
return $tmpstrs;
}
采用GB2312编码的中文网站一个汉字是占2个字节:
function gbsubstr($str, $start, $len) {
$strlen = $start + $len;
for($i = $start; $i < $strlen;) {
if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) {
$tempstr .= substr ( $str, $i, 2 );
$i=$i+2; // 变量自加2
} else{
$tempstr .= substr ( $str, $i, 1 );
$i++;
}
}
return $tempstr;
}