utf-8-关于PHP截取中英文字符串的几个问题

问题描述

关于PHP截取中英文字符串的几个问题

function substr_len($str, $len, $charset='utf-8'){
$len = intval($len);
if(!is_numeric($len) || $len < 0){
return false;
}

$str_len = strlen($str);
if($len >= $str_len){
    return $str;
}

if($charset == 'utf-8'){
    $char_step = 3;
}else{
    $char_step = 2;
}

$substr_i = 0;//截取长度
$act_substr = 0;

for($i = 0; $i < $str_len; $i++){
    if($substr_i >= $len){
        break;
    }

    $sub_val = substr($str, $i, 1);

    if(ord($sub_val) > 0xa0){
        $i += $char_step - 1;
        $act_substr += $char_step;
    }else{
        $act_substr ++;
    }
    $substr_i++;
}
$result_str = substr($str, 0, $act_substr);
return $result_str;

}

解决方案

http://www.jb51.net/article/28864.htm

解决方案二:

php混合字符串长度和截取 中英文

解决方案三:

推荐mb_substr

时间: 2024-10-31 19:13:40

utf-8-关于PHP截取中英文字符串的几个问题的相关文章

js截取中英文字符串、标点符号无乱码示例解读_javascript技巧

复制代码 代码如下: <script> function subString(str, len, hasDot) { var newLength = 0; var newStr = ""; var chineseRegex = /[^\x00-\xff]/g; var singleChar = ""; var strLength = str.replace(chineseRegex,"**").length; for(var i =

smarty中用truncate来截取中英文字符串及避免中文乱码问题

smarty中用truncate来截取含有中英文的字符串,可能会出现中文乱码问题.字符串截取长度不一问题,下面是新建个扩展函数,或修改原Truncate函数方法也可以的. 扩展smarty/plugins目录下自己新建一个文件,写个函数,修改后的smartTruncate: 文件名:modifier.smartTruncate.php  内容如下: <?php function smarty_modifier_smartTruncate($string, $length = 80, $etc =

PHP截取中英文字符函数

中英文字符截取 <?php /** * 截取中英文字符 * Enter description here ... * @param unknown_type $str * @param unknown_type $start * @param unknown_type $length * @param unknown_type $charset * @param unknown_type $suffix * @return unknown|string */ public static func

中英文字符串截取函数(包括html)

  中英文字符串截取函数(包括html) function get_word($string, $length, $dot = '..',$charset='gbk') { if(strlen($string) <= $length) { return $string; } $string = str_replace(array(' ',' ', '&', '"', '<', '>'), array('','','&', '"', '<', '&

php中英文字符串长度截取的例子

使用此方法之前,请在php.ini中开启php_mbstring.dll扩展,将extension前面的;分号去掉即可 很多截取中文字符串的方法,大多不能实现按中文个数来截取所要的字符, 以下代码可以实现:  代码如下 复制代码 <?php mb_internal_encoding('UTF-8'); $str = "中文测试chineseTest"; header('content-type:text/html; charset=UTF-8'); echo mb_strlen(

实用技巧:PHP截取中文字符串的问题

技巧|问题|中文|字符串 以下代码试用于GB2312编码,截取中文字符串是PHP中一个头疼的问题,解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况.但中英文混合.特殊符号等问题总是存在,现在写一个比较全面的,仅供参考: 程序说明: 1. len 参数以中文字符为标准,1len等于2个英文字符,为了形式上好看些 2. 如果将magic参数设为false,则中文和英文同等看待,取绝对的字符数 3. 特别适用于用htmlspecialchars()进行过编码的字符串 4.

PHP截取中文字符串的问题

问题|中文|字符串    以下代码试用于GB2312编码,截取中文字符串是PHP中一个头疼的问题,解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况.但中英文混合.特殊符号等问题总是存在,现在写一个比较全面的,仅供参考:      程序说明:   1. len 参数以中文字符为标准,1len等于2个英文字符,为了形式上好看些   2. 如果将magic参数设为false,则中文和英文同等看待,取绝对的字符数   3. 特别适用于用htmlspecialchars()进

旧题新貌:PHP截取中文字符串的问题

以下代码试用于GB2312编码,截取中文字符串是PHP中一个头疼的问题,解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况.但中英文混合.特殊符号等问题总是存在,现在写一个比较全面的,仅供参考: 程序说明: 1. len 参数以中文字符为标准,1len等于2个英文字符,为了形式上好看些 2. 如果将magic参数设为false,则中文和英文同等看待,取绝对的字符数 3. 特别适用于用htmlspecialchars()进行过编码的字符串 4. 能正确处理GB2312中

php截取html字符串及自动补全html标签的方法

 这篇文章主要介绍了php截取html字符串及自动补全html标签的方法,是php对html操作非常实用的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php截取html字符串及自动补全html标签的方法.分享给大家供大家参考.具体分析如下: 这里总结一下关于利用php截取html字符串自动补全html标签,实际开发中会经常碰到,很多人直接先strip_tags过滤掉html标签,但是就只剩下纯文本了,可读性非常差,下面是一个函数,代码如下: 代码如下: /** * 截