网站开发日志

2008年10月14日星期二

分享家:Addthis中国

PHP 对中文字符窜分割

下面是百度知道里一个网友的问题: PHP - 对字符串操作

我有一个由英文字母、数字、中文字符组成的字符串
我想要往这个字符串的每两个字符中间加入一个百分号“%”,例如:

我爱PHP编程
变成:
我%爱%P%H%P%编%程

如果直接用PHP的函数,str_split, 来分割,会出现乱码,因为中文字符长度和英文字符长度是不一样的。但是我们可以建立新的函数先把支付转成ASCII 值,接着通过判断不同字符的长度来正确分割中文字符串,把结果存入数组,最后再用PHP函数,join,在字符间插入百分号。具体代码如下:

<?php
function str_split_utf8($str) {
    $split=1;
    $array = array();
    for ( $i=0; $i < strlen( $str ); ){
        $value = ord($str[$i]);
        if($value > 127){
            if($value >= 192 && $value <= 223)
                $split=2;
            elseif($value >= 224 && $value <= 239)
                $split=3;
            elseif($value >= 240 && $value <= 247)
                $split=4;
        }else{
            $split=1;
        }
            $key = NULL;
        for ( $j = 0; $j < $split; $j++, $i++ ) {
            $key .= $str[$i];
        }
        array_push( $array, $key );
    }
    return $array;
}
$string ="我爱PHP编程";
$arr1 = str_split_utf8($string);
echo join("%", $arr1);
?>

标签: ,

相关文章:

0 条评论:

发表评论

指向此帖子的链接: