有没有中文
我这里有一个 截取 utf-8编码的中文例子
/**
* 截取UTF-8编码下字符串的函数
*
* @param string $str 被截取的字符串
* @param int $length 截取的长度
* @param bool $append 是否附加省略号
*
* @return string
*/ function CutStr($str,$start, $length = 0, $append = false)
{
$str = trim($str);
$strlength = strlen($str);
if ($length == 0 || $length >= $strlength) {
return $str;
} elseif ($length < 0) {
$length = $strlength + $length;
if ($length < 0) {
$length = $strlength;
}
}
if (function_exists('iconv_substr')) {
$newstr = iconv_substr($str, 0, $length, 'UTF-8');
}elseif (function_exists('mb_substr')) {
$newstr = mb_substr($str, 0, $length, 'UTF-8');
}else {
$newstr = trim_right(substr($str, 0, $length));
}
if ($append && $str != $newstr) {
$newstr .= '...';
}
return $newstr;
}
我这里有一个 截取 utf-8编码的中文例子
/**
* 截取UTF-8编码下字符串的函数
*
* @param string $str 被截取的字符串
* @param int $length 截取的长度
* @param bool $append 是否附加省略号
*
* @return string
*/ function CutStr($str,$start, $length = 0, $append = false)
{
$str = trim($str);
$strlength = strlen($str);
if ($length == 0 || $length >= $strlength) {
return $str;
} elseif ($length < 0) {
$length = $strlength + $length;
if ($length < 0) {
$length = $strlength;
}
}
if (function_exists('iconv_substr')) {
$newstr = iconv_substr($str, 0, $length, 'UTF-8');
}elseif (function_exists('mb_substr')) {
$newstr = mb_substr($str, 0, $length, 'UTF-8');
}else {
$newstr = trim_right(substr($str, 0, $length));
}
if ($append && $str != $newstr) {
$newstr .= '...';
}
return $newstr;
}
<?php$dbh = @mysql_connect("localhost","root","pw");
if(!$dbh){die("error");}
@mysql_select_db("db", $dbh);
@mysql_query("set names 'gbk'");
$q = "SELECT * FROM cdb_threads where fid=20 order by dateline desc limit 7";
$rs = mysql_query($q, $dbh);
/*-------------------------*/
mb_internal_encoding("gb2312");
$string = $row[subject];
$mystring = mb_substr($string,1,5);
echo $mystring;
/*----------------------*/
while($row = mysql_fetch_array($rs))
echo "<li><span> [$row[author]] </span><a href=http://bbs.----.com/viewthread.php?tid=$row[tid] target='_blank' title='$row[subject] $row[lastposter]最后回复'>$mystring</a></li>";
?>请问我这里的mb_substr($string,1,5); 函数是哪里错了呀。 这样返回的是空的, $mystring 变量什么都没有<?php
mb_internal_encoding("gb2312");
$string = "我来测试一下,测试一下!";
$mystring = mb_substr($string,1,5);
echo $mystring;
?>而这样就可以返回正确的截取。
请问各位大侠。 错误在哪里呀?