`
jeffrey0411
  • 浏览: 54060 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php截取汉字问题

阅读更多
在每种语言中,都会遇到汉字的截取,原因英文字母占一个字节,汉字占2个字节,一般的函数中都是对单个字节的,就是说按照英文截取的,当遇到汉字时可能截取一半,就会出现乱码。下面是php的解决方案,其他语言类似。
function msubstr($str, $start, $len){
$tmpstr = "";
$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);
}
return $tmpstr;
}

在smarty模板中,经常用到汉字的截取,需要修改truncate函数或是自己增加函数,下面的代码是增加的函数:
 function smarty_modifier_cntruncate($string, $strlen = 20, $etc = '...', $keep_first_style = false)
{
    $strlen = $strlen*2;
    $string = trim($string);
    if ( strlen($string) <= $strlen ) {
		return $string;
	}
	$str = strip_tags($string);
	$j = 0;
	for($i=0;$i<$strlen;$i++) {
		if(ord(substr($str,$i,1))>0xa0) $j++;
	}
	if($j%2!=0) $strlen++;
	$rstr=substr($str,0,$strlen);
	if (strlen($str)>$strlen) {$rstr .= $etc;}
	if ( $keep_first_style == true && ereg('^<(.*)>$',$string) ) {
		if ( strlen($str) <= $strlen ) {
			return $string;
		}
		$start_pos = strpos($string,substr($str,0,4));
		$end_pos = strpos($string,substr($str,-4));
		$end_pos = $end_pos+4;
		$rstr = substr($string,0,$start_pos) . $rstr . substr($string,$end_pos,strlen($string));
	}
	return $rstr;
} 

用法说明:<{$kjswsList[kjswsCount].topic|cntruncate:18:"...":true}>
18为汉字的个数,不是字节数。
2
0
分享到:
评论

相关推荐

    PHP 去HTML,截取指定汉字正则表达试

    PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试...

    php截取汉字类

    ### PHP截取汉字类知识点详解 #### 一、概述 在Web开发中,尤其是中文网站的开发过程中,经常需要对中文字符串进行截取处理。PHP作为一种常用的服务器端脚本语言,提供了多种方法来处理字符串,包括对中文字符的...

    PHP中如何截取中文字符串

    在PHP中处理中文字符串截取是一项常见的任务,尤其是在网页开发中。中文字符串通常包含UTF-8编码的字符,这与ASCII编码的英文字符串处理方式有所不同。以下将详细讲解如何在PHP中正确截取中文字符串。 首先,我们...

    解决php截取中文出现乱码

    在PHP开发过程中,处理中文字符时常常会遇到一个问题——使用`substr()`函数截取中文字符串时出现乱码的情况。这主要是因为PHP中的`substr()`函数默认是按字节来截取字符串的,而UTF-8编码下的中文字符通常由多个...

    php 截取包含中文的字符串

    php 截取包含中文的字符串

    php不破坏单词截取子字符串类.zip

    4. 国际化支持:考虑到可能处理多种语言的字符串,这个类库可能会考虑不同语言的单词边界问题,比如在英文中单词以空格分隔,而在中文中没有明显的单词边界,需要更复杂的算法来确定边界。 配合提供的"php中文网...

    php自定义函数截取汉字长度

    以上对PHP中自定义函数截取汉字长度的知识点进行了详细阐述,包括其必要性、实现原理、方法示例以及注意事项。掌握这些知识能够有效地帮助开发人员解决处理多语言文本时遇到的字符串截取问题,提高代码的健壮性和...

    PHP截取中文字符串的问题

    解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况。但中英文混合、特殊符号等问题总是存在,现在写一个比较全面的。

    PHP 不区分中英文截取utf8字符串

    这篇博客“PHP 不区分中英文截取utf8字符串”提供了一个解决方案,使得在UTF-8环境下可以正确地截取包含中文和英文的字符串,而不影响其完整性。 首先,我们需要理解UTF-8编码的特点。UTF-8是一种变长编码,英文...

    PHP UTF-8 等宽度截取中英文字符.txt

    ### PHP UTF-8 等宽度截取中英文字符知识点详解 #### 一、背景介绍 ...通过以上内容的学习,可以有效地解决在处理多语言文本时遇到的字符截取问题,特别是在中文环境下,确保字符串截取的准确性及美观性。

    php字符串截取.pdf

    #### 四、UTF-8 和 GB2312都支持的汉字截取函数 **3.1 统一支持的字符串截取函数** ```php function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') { if ($code == 'UTF-8') { // 正则表达式用于匹配...

    php中文字符串截取方法实例总结

    在PHP编程中,处理中文字符串时常常会遇到一些挑战,特别是在进行字符串截取操作时。中文字符由多个字节组成,不像英文字符那样每个字符占用一个字节。因此,使用像`substr`这样的标准字符串处理函数可能会导致乱码...

    PHP 字符截取 解决中文的截取问题,不用mb系列

    ### PHP字符截取解决中文问题的方法 在处理中文字符时,传统的字符串操作方法往往不能很好地支持多字节编码,如UTF-8等。这会导致截取后的字符串出现乱码或者不完整的情况。本文将详细介绍一个不需要使用`mb_`系列...

    PHP获取真实IP函数和中文截取函数

    在PHP编程中,获取用户真实IP地址和对中文字符串进行截取是常见的需求。下面将详细解释这两个功能的实现。 首先,我们来看如何在PHP中获取用户的真实IP地址。由于HTTP请求中的IP地址可能受到代理服务器的影响,因此...

    php 截取字符串

    在处理字符串操作时,PHP提供了丰富的内置函数,使得我们能够方便地进行字符串截取。这篇博客将深入探讨PHP如何截取字符串,并通过实例来演示其具体用法。 标题中的“php 截取字符串”主要涉及PHP中的两个核心函数...

    php字符串截取中文截取2,单字节截取模式

    在实际应用PHP进行中文字符串截取时,除了考虑字符的完整性和遍历字符串的性能问题外,还应当考虑编码的问题。由于PHP在处理字符串时,不同的编码方式(如UTF-8、GBK等)下,字符的字节长度可能会有所不同,因此在...

    php截取字符串

    本篇将围绕“PHP截取字符串”这一主题,深入探讨相关的知识点。 首先,我们需要了解PHP中最常用的字符串截取函数——`substr()`。`substr()`函数允许我们从字符串的指定位置开始,截取指定长度的字符。其基本语法...

    php截取中文字符串不乱码的方法

    总结来说,要避免 PHP 截取中文字符串时的乱码问题,关键在于正确使用 `mb_substr` 函数并指定字符串的编码,同时确保 PHP 文件和网页的编码设置一致。在不确定字符串编码的情况下,可以通过 `mb_check_encoding` ...

    PHP截取字符串,生成文章摘要

    在PHP中,截取字符串并生成文章摘要是常见的任务,特别是在构建内容管理系统或者博客平台时。这个过程涉及到字符串处理和文本分析技术。下面我们将详细探讨如何使用PHP来实现这一功能。 首先,PHP提供了多种内置...

    php中的一个中文字符串截取函数

    在PHP中,字符串截取函数是一个基本的函数,但是它不能正确地处理中文字符串,因为中文字符串在UTF-8编码中占用多个字节,而PHP的截取函数只能截取固定长度的字符串,无法正确地截取中文字符串。因此,需要开发一个...

Global site tag (gtag.js) - Google Analytics