Chinaunix
标题:
急, 截取字符串时出错
[打印本页]
作者:
guishoudaoge
时间:
2008-03-16 23:14
标题:
急, 截取字符串时出错
问题, 处理特殊字符时不正确,使用网上的方面也不成功, 下面是代码,但特殊字符没有显示出来,请下载附件。
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 编辑
]
string_handler.rar
2008-03-16 23:14 上传
点击文件名下载附件
1.11 KB, 下载次数: 10
作者:
guishoudaoge
时间:
2008-03-17 14:29
我自己顶上去
作者:
guishoudaoge
时间:
2008-03-17 23:25
我再顶:em11:
作者:
ydlhero
时间:
2008-03-18 09:19
程序太多 你让别人帮你调试么?
如果你先实现 截取的话,有中文 就是高位字符 判断下就好了 不必要写这么长
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2