以前在截取
字符
串的时候,字母和数字,都不会出现太多的问题,
尤其是中文
,一截就会出先:把某个汉字给截成两办了,
这会儿就会出现乱码!
因此想大家提供,两个函数
绝对好用:
GBK截取函数:
function GBsubstr($str, $start, $len) {
if (strlen ( $str ) > $len) {
$strlen = $start + $len;
for($i = 0; $i < $strlen; $i ++) {
if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) {
$tmpstr .= substr ( $str, $i, 2 );
$i ++;
} else {
$tmpstr .= substr ( $str, $i, 1 );
}
}
$tmpstr .= "";
return $tmpstr;
} else {
return $str;
}
}
UTF-8字符截取:
function subString_UTF8($str, $start, $lenth) {
$len = strlen ( $str );
$r = array ();
$n = 0;
$m = 0;
for($i = 0; $i < $len; $i ++) {
$x = substr ( $str, $i, 1 );
$a = base_convert ( ord ( $x ), 10, 2 );
$a = substr ( '00000000' . $a, - 8 );
if ($n < $start) {
if (substr ( $a, 0, 1 ) == 0) {
} elseif (substr ( $a, 0, 3 ) == 110) {
$i += 1;
} elseif (substr ( $a, 0, 4 ) == 1110) {
$i += 2;
}
$n ++;
} else {
if (substr ( $a, 0, 1 ) == 0) {
$r [] = substr ( $str, $i, 1 );
} elseif (substr ( $a, 0, 3 ) == 110) {
$r [] = substr ( $str, $i, 2 );
$i += 1;
} elseif (substr ( $a, 0, 4 ) == 1110) {
$r [] = substr ( $str, $i, 3 );
$i += 2;
} else {
$r [] = '';
}
if (++ $m >= $lenth) {
break;
}
}
}
return $r;
} // End subString_UTF8
分享到:
相关推荐
本文章向大家介绍一个php 截取utf-8格式字符串的函数。 举例说明: function truncate_utf8_string($string, $length, $etc = '...') { $result = ''; $string = html_entity_decode ( trim ( strip_tags ( $...
开发过程中的一些实用工具函数源码:获得当前程序的路径、获得ini文件内容、设置ini文件内容、获得ini的节点名称、校验文件/路径是否存在、创建路径、获得/写入文件内容/遍历文件夹、字符串转换、文件复制、字符编码...
/* * @todo 中文截取,支持gb2312,gbk,utf-8,big5 * * @param string $str 要截取的字串 * @param int $start 截取起始位置 * @param int $length 截取长度 * @param string $charset utf-...
首先我查阅资料并写了个函数: 示例:返回输入字符串中汉字的个数: std::string StrWithOutSymbol(const std::string &source) { string sourceWithOutSymbol; int i = 0; while (source[i] != 0) { if ...
一、中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encoding,网页编码,如utf-8,GB2312,GBK 实例: 复制...
如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节。 PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。 使用substr截取中文字符时会出现乱码,这是因为substr是按...
// 将字符串由 GBK 编码转换为 UTF-8 编码 但 iconv 只能解决编码预先知道的情况,如果字符串编码未知,则需要先探测其编码,这时可能会用到 mb_string 扩展库: 复制代码 代码如下:mb_detect_encoding(‘软件开发...
* 对数据进行编码转换 * @param array/string $data 数组 * @param string $output 转换后的编码 */function array_iconv($data,$output = ‘utf-8’) { $encode_arr = array(‘UTF-8′,’ASCII’,’GBK’,’...
$file=iconv(“gbk//IGNORE”,”utf-8″,$file); //echo $file; echo strpos($file,'<title>’); echo substr($file,strpos($file,'<title>’)+7,strpos($file,'</title>’-strpos($file,'<...
取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。 -------------------------------------------------------------------------------- 易语言5.0 相对于易语言4.x更新说明(2010/02/01): 增加...
实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...
实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...