文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>半个汉字变问号,求解决办法

半个汉字变问号,求解决办法

时间:2008-05-13  来源:剑心通明

一句话中截取一部分,则有可能会出现半个汉字,则显示为问号.  
若全是汉字,则可截取偶数字节,但有可以有标点符号,空格之类的就不好办了,求解决办法.
/**
* 截取中文部分字符串
*
* 截取指定字符串指定长度的函数,该函数可自动判定中英文,不会出现乱码
*
* @access public
* @param string    $str    要处理的字符串
* @param int       $strlen 要截取的长度默认为10
* @param string    $other  是否要加上省略号,默认会加上
* @return string
*/
function showtitle($str,$strlen=10,$other=true) {
    for($i=0;$i0xa0) $j++;
    if($j%2!=0) $strlen++;
    $rstr=substr($str,0,$strlen);
    if (strlen($str)>$strlen && $other) {$rstr.='...';}
    return $rstr;
}
我也做了一个,用于显示文件名
$tmp_maxlen=22;
if (strlen($tmp_file)>$tmp_maxlen){
$i=0;
$ii=0;
while ($i127){$ii++;}
if (($i>=$tmp_maxlen-3)&&($ii%2==0)){
$tmp_dispname=substr($tmp_file,0,$i-1).'...';
break;
}
$i++;
}
}else{$tmp_dispname=$tmp_file;}
我的方法:
[code:1:94c98032c6]
// 截取汉字文本串并保持汉字完整
function mysubstr($str, $N) {
if (strlen($str)  127) {
         $tmp .= substr($str,$i,2);
         $i = $i + 2;
         } else {
         $tmp .= substr($str,$i,1);
         $i = $i + 1;
     }
     }
     
return $tmp;
}[/code:1:94c98032c6]
哈哈!!!!
开始我也打算和你们一样解决的,最后我发觉有Multi-Byte String Functions。
http://www.php.net/manual/en/ref.mbstring.php

    • $test = "这是1个用来测试的中文字符串";  

    • echo mb_substr($test, 0, 6, "EUC-JP");  

    • echo "
      ";  

    • echo
      substr
      ($test, 0, 6);  
    • ?>  
      [/code:1:90dde3e5db]
      没有EUC-CN,只好EUC-JP了


  • 相关阅读 更多 +
    排行榜 更多 +
    辰域智控app

    辰域智控app

    系统工具 下载
    网医联盟app

    网医联盟app

    运动健身 下载
    汇丰汇选App

    汇丰汇选App

    金融理财 下载