jiangshilin87 发表于 2012-10-30 10:59

php截取中文的函数

我知道有个叫mb_substr()
但是会有乱码。

jiangshilin87 发表于 2012-10-30 11:00

求解决啊!希望高手帮我解决mb_substr截取中文乱码问题。

satrun7 发表于 2012-10-30 12:42

<?php
/**
* 字符串截取,支持中文和其他编码
*
* @param string $str 需要转换的字符串
* @param string $start 开始位置
* @param string $length 截取长度
* @param string $charset 编码格式
* @param string $suffix 截断字符串后缀
* @return string
*/
function substr_ext($str, $start=0, $length, $charset="utf-8", $suffix="")
{
    if(function_exists("mb_substr")){
         return mb_substr($str, $start, $length, $charset).$suffix;
        }
    elseif(function_exists('iconv_substr')){
         return iconv_substr($str,$start,$length,$charset).$suffix;
    }
    $re['utf-8']= "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
    $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
    $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
    $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
    preg_match_all($re[$charset], $str, $match);
    $slice = join("",array_slice($match, $start, $length));
    return $slice.$suffix;
}mb_substr截取乱码,那是因为你没有对应好的php文件编码与函数编码参数.

jiangshilin87 发表于 2012-10-30 14:18

satrun7 发表于 2012-10-30 12:42 static/image/common/back.gif
mb_substr截取乱码,那是因为你没有对应好的php文件编码与函数编码参数.

哦原来如此啊,知道啦,先谢谢啦

linux_c_py_php 发表于 2012-10-30 15:14

不是mb函数不好用, 是因为你不知道自己的文件是什么编码而已.

jiangshilin87 发表于 2012-10-30 15:41

请您赐教一下啦!:mrgreen: 回复 5# linux_c_py_php


   

jiangshilin87 发表于 2012-11-08 11:29

查询数据库中uname有重复的:select uname,count(uid)from user   group by uname having count

(uid)>1
按照 两个字段降序:select * from bbs_topic order by top desc,ctime desc limit 6
替换指定字段的指定字符串:
update space_info set baseinfo=replace(baseinfo ,'baidu.com','123456.abc') where baseinfo

like '%baidu.com%';
查看表结构:
show create table tablename;
查看主机
show databases;
show tables;

mysql -h 127.0.0.1 -uroot -pbaidu;(注意中间-u,-p无空格)

linux_c_py_php 发表于 2012-11-10 11:09

你必须知道你要操作的字符串的编码, 否则mb是没法使用的, 但mb提供了一个猜编码的函数, 你可以体验一下.

amoodguy 发表于 2012-11-12 00:24

string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )

第四个参数就是你当前字符串的编码。
页: [1]
查看完整版本: php截取中文的函数