加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php chr() ord()中文截取乱码问题解决方法

发布时间:2020-12-13 05:27:21 所属栏目:PHP教程 来源:网络整理
导读:div class="codetitle" a style="CURSOR: pointer" data="35174" class="copybut" id="copybut35174" onclick="doCopy('code35174')" 代码如下: div class="codebody" id="code35174" ?php $lenth = 19; $str = "怎么将新闻的很长的标题只显示前面一些字,后

<div class="codetitle"><a style="CURSOR: pointer" data="35174" class="copybut" id="copybut35174" onclick="doCopy('code35174')"> 代码如下:<div class="codebody" id="code35174">
<?php
$lenth = 19;
$str = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";
echo strlen($str)<=$lenth ? $str : (substr($str,$lenth).chr(0)."....");
?>

<div class="codetitle"><a style="CURSOR: pointer" data="26888" class="copybut" id="copybut26888" onclick="doCopy('code26888')"> 代码如下:<div class="codebody" id="code26888">
<?
/
@ 另一种方法,使用ord()函数:
@ 适用于 gb2312 编码:
/
$str = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";
function gb2312_substr($str,$limit) {
$restr ='';
for($i=0;$i< $limit-3;$i++) {
$restr .= ord($str[$i])>127 ? $str[$i].$str[++$i] : $str[$i];
}
return $restr;
}
/
@ 以下仅适用于 utf-8 编码;
/
function utf8_substr($str,$limit) {
$restr = '';
for($i=0;$i< $limit-3;$i++) {
$restr .= ord($str[$i])>127 ? $str[$i].$str[++$i].$str[++$i] : $str[$i];
}
return $restr;
}
//解释下上面第一个:chr(0)不是null,null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000虽然chr(0)不会显示出什么,但是他是一个字符。虽然chr(0)不会显示出什么,但是他是一个字符。当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。
?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读