- 论坛徽章:
- 0
|
问题, 处理特殊字符时不正确,使用网上的方面也不成功, 下面是代码,但特殊字符没有显示出来,请下载附件。
- class string_handler {
-
- // 1: means the string is utf-8
- // 0: means the string is gbk/gb2312
- static $isUtf8 = 1;
-
- public function __construct(){
- die("not allow to implement a new object");
- }
-
- public static function strlen($str) {
- return self::$isUtf8 ? strlen(self::mce($str, true)) : strlen($str);
- }
-
- // public static function strlen2($str) {
- // return self::$isUtf8 ? iconv_strlen($str, 'utf-8') : iconv_strlen($str, 'gbk');
- // }
-
- /**
- * $sta means start offset
- * $len means length
- * $del means delimiter
- */
- public static function substr($str, $sta, $len, $del = '...') {
-
- $str_length = self::strlen($str);
- $del_length = self::strlen($del);
-
- if ($str_length <= $len) {
- return $str;
- }
-
- if (self::$isUtf8) {
- return self::mce(substr(self::mce($str, true), $sta, $len - $del_length), false) . $del;
- } else {
- return self::mce(self::mce(substr(self::mce(self::mce($str, false), true), $sta, $len - $del_length), false) . $del, true);
- }
- }
-
- /**
- * mb_convert_encoding
- * @param unknown_type $str
- * @param unknown_type $isUtf8
- */
- private function mce($str, $u2g) {
- return $u2g ? mb_convert_encoding($str, 'GBK', "UTF-8") : mb_convert_encoding($str, 'UTF-8', "GBK") ;
- }
- }
-
-
- //test
- header("Content-Type: text/html; charset=utf-8");
- $str = '۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞';
- $str1 = 'aaaaaaaaaa你好吗?你好吗?你好吗?a۞۞۞';
- $str2 ='——ゞこ≈—————----ヽ☆——.ヽ☆——..';
- $str3 ='に伴うエンべデッドプレーヤの挙動について · RealNetworks お問い合わせ | サイトマップ ';
- $length = 38;
-
- echo $str . "<BR />";
- echo $str1 . "<BR />";
- echo $str2 . "<BR />";
- echo $str3 . "<BR />";
-
- echo "=================================<br /> <br /> <br /> <br />";
-
-
-
- string_handler::$isUtf8 = 1;
- echo string_handler::substr($str, 0, $length, '...more');
- echo "<br />";
- echo string_handler::substr($str1, 0, $length, '...more');
- echo "<br />";
- echo string_handler::substr($str2, 0, $length, '...more');
- echo "<br />";
- echo string_handler::substr($str3, 0, $length, '...more');
复制代码
[ 本帖最后由 guishoudaoge 于 2008-3-16 23:16 编辑 ] |
|