PHP 读文本中的一部分。并保证汉字完整

中12s国ssssss中国人中国人中国人。森严如:读中间的6个字节,如果赶上汉字不完整了减少读入字节数。UTF-8。类似于将读入的文本以分页形式显示。一页里当然不可能出现... 中12s国ssssss中国人中国人中国人。森严如:读中间的6个字节,如果赶上汉字不完整了减少读入字节数。
UTF-8。

类似于将读入的文本以分页形式显示。一页里当然不可能出现汉字不完整情况。第一页在哪里截断就是个问题。

只想通过字去读。不想用行去读。
展开
 我来答
coolapp
2013-07-02 · TA获得超过771个赞
知道小有建树答主
回答量:505
采纳率:25%
帮助的人:233万
展开全部

说简单也简单,说难也难。因为难是新手想简单了。

先上几个概念,再上代码

概念1

php4.3.0以上已经可以处理多字节字符了。

首先确保一下你的 php.ini 中配置一下节(默认是配置好的,支持的)

[mbstring]

[PHP_MBSTRING]
extension=php_mbstring.dll

然后就可已使用这些函数了。(如 mb_substr 代替原来的 substr)


概念2

多字节编码问题,不同编码长度不一样,还有固定长度和可变长度的分别。

常说的汉字占两个字节是指传统的GB2312区位码

现在流行的utf8的编码是1至6个变长字节。


所以,首先要统一编码,然后用php带的多字节处理函数来处理


代码示例

<?php  
//测试时文件的编码方式要是UTF8  
$str='中文a字1符';  
echo strlen($str).'<br>';//14  
echo mb_strlen($str,'utf8').'<br>';//6  
echo mb_strlen($str,'gbk').'<br>';//8  
echo mb_strlen($str,'gb2312').'<br>';//10  
?>
追问
UTF-8。

类似于将读入的文本以分页形式显示。一页里当然不可能出现汉字不完整情况。第一页在哪里截断就是个问题。
追答
除非是纯文本,非常容易。
如果有html代码,正好将布局的标签(div,table等)截断页面可能出现布局错乱。所以含有html代码的自动分页很难做,需要用到html代码分析。 常用的是手动分页,插入分页符。
博思aippt
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT... 点击进入详情页
本回答由博思aippt提供
sycool889
2013-07-02 · TA获得超过469个赞
知道小有建树答主
回答量:346
采纳率:0%
帮助的人:196万
展开全部
我记得有方法可以判断,截断出来的字符串是否是汉字、

如果是汉字,往前退一位截断,再判断当前截出来的最后一个字符是否是汉字、

递归下去,直到截出来的是汉字为止、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
newdot
2013-07-02 · TA获得超过453个赞
知道小有建树答主
回答量:286
采纳率:100%
帮助的人:267万
展开全部
function substr_CN($str, $start, $len) {
    $tmpstr = "";
    $strlen = $start + $len;
    for($i = 0; $i < $strlen; $i++) {
        if(ord(substr($str, $i, 1)) > 0xa0) {
            $tmpstr .= substr($str, $i, 2);
            $i++;
        } else
            $tmpstr .= substr($str, $i, 1);
    }
    return $tmpstr;
}
追问
UTF-8。

类似于将读入的文本以分页形式显示。一页里当然不可能出现汉字不完整情况。第一页在哪里截断就是个问题。
追答
不明白提问者的意思,第一页在哪里截断,这完全取决于操作者,况且几乎没有段中分页这种场景,无非就是段外分层显示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式