不要使用substr, 使用mb_substr函数,是几个字符就截取几个。 mb_substr函数支持编码方式(GB2312, UTF-8)。
解决方案 »
- php如何载入特定网页?求助
- php中逐级向上提交问题
- MySQL 5.1分区技术初探(二)
- 数据统计
- 奇怪,为什么一个int(1)的mysql字段我赋值222222都可以?
- PHP-SSL-SOCKET(解决或者提供实例者高分+200)
- 急呀!如何点击图片打开一个窗口,用js?50分备齐!
- 急救!在新用户注册中,当用户输入的内容含有“'”或“"”时,如何屏蔽或者如何给出错误提示?
- 为什么老是报这个错:Premature end of script headers: php.exe
- 各位高手,能不能告诉我关于几个常用的session函数的用法??非常急!!在线等!!
- 在公司开发....不爽,散分
- 大虾,帮助啊,小第初学PHP可环境不会配置,88分啊!!
另外,不用它也一样可以做到。呵呵,那就是中文编码的问题了,呵呵ord($str[$i])是否小于128。
呵呵
function sub_str($str,$len){
$str = (string)$str;
$len = (int)$len; $strlen = strlen($str);
if($len>$strlen) $len = $strlen; $i = 0;
$fixlen = 0;
while($i<$len){
$chr = $str[$i];
$i++;
if(ord($chr)<0x80) $fixlen++;
elseif($i<$len){
$i++;
$fixlen += 2;
}
} return substr($str,0,$fixlen);
} <?phh print sub_str($s_v_content, 0, 20);?>,
奇数什么都试了不过用 iconv_substr($s_v_content, 0, 20, 'gbk')中文也算一个字符
也还挺方便的
还不结帐,呵呵
http://community.csdn.net/Expert/topic/4338/4338855.xml?temp=.8305628
<?
//用法与substr函数一样
function c_substr($str,$start=0) {
$ch = chr(127);
$p = array("/[\x81-\xfe]([\x81-\xfe]|[\x40-\xfe])/","/[\x01-\x77]/");
$r = array("","");
if(func_num_args() > 2)
$end = func_get_arg(2);
else
$end = strlen($str);
if($start < 0)
$start += $end; if($start > 0) {
$s = substr($str,0,$start);
if($s[strlen($s)-1] > $ch) {
$s = preg_replace($p,$r,$s);
$start += strlen($s);
}
}
$s = substr($str,$start,$end);
$end = strlen($s);
if($s[$end-1] > $ch) {
$s = preg_replace($p,$r,$s);
$end += strlen($s);
}
return substr($str,$start,$end);
}
?>