不使用mb_strlen函数,如何实现中英文混合组成的字符串的长度?

爱着有你 2007-07-02 11:39:14
由于我们的系统架设时没有编译进mb_string扩展。现在mb_strlen不能使用。想写一个能够实现mb_strlen功能的函数。请问要怎么实现?

我在网上找了好久。多数都只是简单地将汉字的长度当成2个字节来计算。

更高明一点的有用 ord($str[$i])>=128 来找到中文字符的。

但上面这些方法都不能很严格并适用于全部的编码方式。

听朋友讲有用正则表达式来实现的,但我始终没有想明白,这现要怎么实现。

如果有高手能将php实现mb_strlen的函数写在php的,本人将感激涕零!!!!!!!!!!!!!
...全文
336 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
总哈哈 2007-07-02
  • 打赏
  • 举报
回复
这种方式适合utf8其它的没有试过.
总哈哈 2007-07-02
  • 打赏
  • 举报
回复
<?php
// 中文字符截取
// author : 轻风慢语
// 转载请注明出处

function cutStr($str, $len)
{
$new_str = '';
$wordLen = 0;
while ($wordLen < $len) {
$temp_str = substr($str, 0, 1);

if (ord($temp_str) > 127) { // 中文
$new_str .= substr($str, 0, 3);
$str = substr($str, 3);
$wordLen++;
} else { // E文
$new_str .= substr($str, 0, 1);
$str = substr($str, 1);
$wordLen++;
}
}
return $new_str;
}

echo cutStr("我爱你AND他,AND大家", 8);
?>
爱着有你 2007-07-02
  • 打赏
  • 举报
回复
ord($temp_str) > 127

这是其中一种,但如果用在别的编码上就不太准确了

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧