首页/Home PHP Tutorial (教程) 常用 UTF8 字符串 (如汉字) 函数类

常用 UTF8 字符串 (如汉字) 函数类

PrintE-mail
Wednesday, 29 October 2008 08:41  

当前不少网站的缺省编码方式为 GB2312 或 UTF8. 因为这个地球上装有 GB2312 这种编码格式的电脑不如装有 UTF8 编码格式的电脑多, 所以推荐网站编码格式均为 UTF8. 对于 UTF8 字符串的操作, PHP 内置的默认字符串操作函数结果有时是不正确的, 尤其是对像汉字这样的文字. 因此, 对 UTF8 格式的字符串要常用 mb_xxx() 之类的函数. 但用起来又不怎么方便. 因此, 特整理一些常用的函数备大家参考.

这是最常用到的一些函数. 大家如果有其它需求, 欢迎在下方留下要增加的内容. 以使其不断完善, 为 PHPer 更好地服务.

<?php
/**
 * 常用UTF-8字符串操作类
 * @author Shelley Shyan
 * @copyright http://phparch.cn
 */
class UTF8 {
    public static 
$encoding 'UTF-8';
    
/**
     * 是不是有效的 UTF8 字符串
     * @param string $str
     * @return integer
     */
    
public function valid ($str) {
        return (
preg_match('/^.{1}/us'$str$ar) == 1);
    }

    
/**
     * UTF8 编码的字符串长度
     * 两种返回结果一样.
     * @param string $str
     * @return integer 
     */
    
public function strlen ($str) {
        
//return preg_match_all('/[\x00-\x7F\xC0-\xFD]/', $str, $matches);
        
return mb_strlen($strself::$encoding);
    }

    
/**
     * 要搜索的字符串的位置 (左侧开始)
     * @param string $str
     * @param string $search 要搜索的字符串,要用valid 检查
     * @param integer $offset 起始位置
     * @return mixed 成功时为整数,失败时为false 
     */
    
public function strpos ($str$search$offset false) {
        if(
strlen($str) && strlen($search)) {
            if ( 
$offset === false ) {
                
$offset 0;
            }
            return 
mb_strpos($str$search$offsetself::$encoding);
        } else return 
false;
    }

    
/**
     * 取子字符串
     * @param string $str
     * @param integer $offset 左端起的UTF-8起点
     * @param integer $length UTF-8 字符串长度
     * @return mixed 字符串或 false 
     */
    
public function substr ($str$offset$length false) {
        if (
$length === false) {
            return 
mb_substr($str$offsetself::strlen($str), self::$encoding);
        } else {
            return 
mb_substr($str$offset$lengthself::$encoding);
        }
    }

    
/**
     * 字符串翻转
     * @param string $str
     * @return string 
     */
    
public function strrev ($str) {
        
preg_match_all('/./us'$str$ar);
        return 
join(''array_reverse($ar[0]));
    }
}
?>

下面是使用示例:

<?php
// 演示字符串
$str '你好,PHP 架构网。<i>Hi</i>';

echo 
'UTF8字符串: 'UTF8::valid($str)
   . 
'<br />长度: 'UTF8::strlen($str
   . 
'<br />位置: 'UTF8::strpos($str'架')
   . 
'<br />子串: 'UTF8::substr($str3, 6);
?>

上面的示例结果如下:

UTF8字符串: 1
长度: 20
位置: 7
子串: PHP 架构

欢迎大家推荐更多的常用函数, 以便为大家提供更多的帮助. Cool

 

回复

On Saturday, 27 December 2008

音一儿

谢谢,非常好的东西.~


回复