• 技术文章 >php教程 >php手册

    自己写的php中文截取函数mb_strlen和mb_substr

    2016-06-06 20:10:44原创346

    这篇文章主要介绍了自己写的php中文截取函数mb_strlen和mb_substr,在服务器没mbstring库时可以使用本文函数代替,需要的朋友可以参考下

    众所周知,php 自带的 strlen 与 substr 函数没法处理中文字符,于是,我们会用 mb_ 系列函数替代。但是,没有 mbstring 库怎么办?这就需要我们自己写一个来替代了,,废话不多说,先上代码:

    复制代码 代码如下:


    if ( !function_exists('mb_strlen') ) {
    function mb_strlen ($text, $encode) {
    if ($encode=='UTF-8') {
    return preg_match_all('%(?:
    [\x09\x0A\x0D\x20-\x7E] # ASCII
    | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
    | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
    | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
    | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
    | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
    | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
    | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
    )%xs',$text,$out);
    }else{
    return strlen($text);
    }
    }
    }

    /* from Internet, author unknown */
    if (!function_exists('mb_substr')) {
    function mb_substr($str, $start, $len = '', $encoding="UTF-8"){
    $limit = strlen($str);

    for ($s = 0; $start > 0;--$start) {// found the real start
    if ($s >= $limit)
    break;

    if ($str[$s] <= "\x7F")
    ++$s;
    else {
    ++$s; // skip length

    while ($str[$s] >= "\x80" && $str[$s] <= "\xBF")
    ++$s;
    }
    }

    if ($len == '')
    return substr($str, $s);
    else
    for ($e = $s; $len > 0; --$len) {//found the real end
    if ($e >= $limit)
    break;

    if ($str[$e] <= "\x7F")
    ++$e;
    else {
    ++$e;//skip length

    while ($str[$e] >= "\x80" && $str[$e] <= "\xBF" && $e < $limit)
    ++$e;
    }
    }

    return substr($str, $s, $e - $s);
    }
    }

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php中get_object_vars()方法用法实例 下一篇:php构造函数的继承方法
    PHP编程就业班

    相关文章推荐

    • PHP语言基础 04 By ACReaper• set_include_path和get_include_path使用及注意事项• PHP 文件上传功能实现代码• 动态网页技术PHP程序字符串处理函数• 利用文件属性结合Session实现在线人数统计(Code)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网