手机
当前位置:查字典教程网 >编程开发 >php教程 >自己写的php中文截取函数mb_strlen和mb_substr
自己写的php中文截取函数mb_strlen和mb_substr
摘要:众所周知,php自带的strlen与substr函数没法处理中文字符,于是,我们会用mb_系列函数替代。但是,没有mbstring库怎么办?...

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

复制代码 代码如下:

if ( !function_exists('mb_strlen') ) {

function mb_strlen ($text, $encode) {

if ($encode=='UTF-8') {

return preg_match_all('%(?:

[x09x0Ax0Dx20-x7E] # ASCII

| [xC2-xDF][x80-xBF] # non-overlong 2-byte

| xE0[xA0-xBF][x80-xBF] # excluding overlongs

| [xE1-xECxEExEF][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);

}

}

【自己写的php中文截取函数mb_strlen和mb_substr】相关文章:

无数据库的详细域名查询程序PHP版(3)

PHP curl伪造IP地址和header信息代码实例

php序列化函数serialize() 和 unserialize() 与原生函数对比

10个提供免费PHP脚本下载的网站

php支持中文字符串分割的函数

PHP和JAVA的XML-RPC中文问题解决办法

在php中取得image按钮传递的name值

建立动态的WML站点(一)

phplot生成图片类用法详解

GD输出汉字的函数的分析

精品推荐
分类导航