PHP页面的文字部分变成问号,window_半个汉字变问号,求解决办法 ,一句话中截取一部分,则有可能 - phpStudy...

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

一句话中截取一部分,则有可能会出现半个汉字,则显示为问号.

若全是汉字,则可截取偶数字节,但有可以有标点符号,空格之类的就不好办了,求解决办法.

/**

* 截取中文部分字符串

*

* 截取指定字符串指定长度的函数,该函数可自动判定中英文,不会出现乱码

*

* @access public

* @param string    $str    要处理的字符串

* @param int       $strlen 要截取的长度默认为10

* @param string    $other  是否要加上省略号,默认会加上

* @return string

*/

function showtitle($str,$strlen=10,$other=true) {

for($i=0;$i

if(ord(substr($str,$i,1))>0xa0) $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 ($i

if (ord(substr($tmp_file,$i,1))>127){$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) <= $N) return $str;

$i = 0;

$tmp = "";

while ($i <= $N) {

if (ord(substr($str,$i,1)) > 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了

本文作者:相关阅读:

解决DEDECMS网页木马(含iframe/script木马)

ASP生成html的新方法

SQL Server数据库内存增加问题分析

Windows7系统不能打开.hlp文件问题解决

javascript 表单验证常见正则

搭建EXTJS和STRUTS2框架(ext和struts2简单实例)

修改Oracle数据库进程数及会话数

jsp 自定义标签实例

SQL常用全局变量介绍

一个导航条布局的简单写法" target="_blank">一个导航条布局的简单写法

微软拥抱AJAX和IronPython

javascript支持firefox,ie7页面布局拖拽效果代码

jQuery powerFloat万能浮动层下拉层插件使用介绍

Html5新标签解释及用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值