php中文拦截功能mb_strlen和mb_substr你自己写的
复制代码代码如下所示:
如果(!function_exists('mb_strlen ')){
功能mb_strlen($文本编码,$){
如果($编码= = 'utf-8){
返回preg_match_all(%s(:
{ x09 x0a x0d X20 - x7e ASCII # }
{ XC2 - XDF } { X80 - XBF }非超长字节| #
xe0 { xA0 - XBF } { X80 - XBF }不包括overlongs | #
{ XE1 - XeF XEC夕} { X80 - XBF } { 2 }直| # 3字节
固定{ X9F } { X80 - X80 - XBF }不包括代理人| #
xf0 { X90 - XBF } { X80 - XBF } { 2 }面| # 1-3
{ XF1 - xf3 } { X80 - XBF } { 3 }面4-15 | #
| # 幅国土{ X80 - x8f } { X80 - XBF } { 2 }平面16
XS)%,$文本,美元);
其他{ }
返回strlen($文本);
}
}
}
从Internet作者未知。
如果(!function_exists('mb_substr ')){
功能mb_substr($str,美元开始,len =美元,美元=UTF-8编码){
为限制= strlen(str);
对于($ = 0;$开始> 0;;$开始找到真正的开始)
如果($ = $限制)
打破;
如果($str { }美元<= x7f )
++;
{其他
++
而($str { $ } > = X80$str { $ } 工具)
++;
}
}
如果($ = '')
返回substr($str,$ S);
其他的
对于($ = $ s;$ 0;;),找到真正的结束
如果($ = $限制)
打破;
如果($str { $ E } < = x7f )
+ e;
{其他
++;跳过长度
而($str { $ E } > = X80$str { $ E } 工具$ E $极限)
+ e;
}
}
返回substr($str,$,$ E $ S);
}
}