这是一个简单的函数,或许对你我都有用吧。
以前也有类似的文章,这个我仍然和上次一样,用来记录这些正则,无它。。。
原文作者阿彪,来自:http://www.bloomandkevin.cn/2009/02/blog-post.html
<?php
/*
* 中文截取,支持gb2312,gbk,utf-8,big5
*
* @param string $str 要截取的字串
* @param int $start 截取起始位置
* @param int $length 截取长度
* @param string $charset utf-8|gb2312|gbk|big5 编码
* @param $suffix 是否加尾缀
*/
public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
if(function_exists("mb_substr"))
return mb_substr($str, $start, $length, $charset);
$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[0], $start, $length));
if($suffix) return $slice."…";
return $slice;
}
?>
分享到:
相关推荐
在IT领域,字符串处理是日常开发中的重要环节,特别是在处理包含中文字符的字符串时,由于中文字符占据的字节数量不同于英文字符,因此在截取字符串时需要考虑到不同的编码格式。本文将深入探讨中文字符串截取的底层...
Delphi提供了丰富的字符串处理函数,其中包括了截取、拼接、删除、插入等功能,极大地简化了开发者的编码工作。本文将详细介绍Delphi中几种常用的字符串截取函数及其应用示例,帮助开发者更深入地理解和掌握这些功能...
由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就导致了在不正确处理的情况下可能会截断字符,从而出现乱码问题。本篇文章将深入探讨如何在Delphi中实现中文和英文混合字符串的...
### SQL截取字符串函数详解 在SQL中,处理文本数据是一项常见的需求,特别是在数据库管理和数据分析领域。本文将详细介绍几种常用的SQL截取字符串函数及其应用场景,包括`LEFT`、`RIGHT`、`SUBSTRING`以及一些高级...
这是因为一个中文字符通常占用多个字节(在UTF-8编码下通常是3个字节),而直接按字节数分割可能会在字符中间进行切割,导致数据损坏。 #### 解决方案 为了解决这一问题,我们可以采用一种更为智能的策略来确保...
我们可以使用`mb_substr()`函数来截取中文字符串: ```php $ChineseString = "这是一个中文字符串"; $substring = mb_substr($ChineseString, 0, 3, 'utf-8'); ``` 在上面的代码中,`mb_substr()`函数的第三个参数...
C#开发中经常用到一些字符串截取的函数,文档中含有大多数的函数
这是因为这两个函数在设计时可能没有充分考虑多字节字符集,如UTF-8,而中文字符在UTF-8编码下通常由多个字节组成。 当使用`substr()`或`substring()`截取中文字符串时,如果截取的起始位置和长度没有正确地对齐到...
本文将详细介绍几种常用的字符串截取函数,包括`split()`、`join()`、`substring()`以及`indexOf()`等方法,并通过示例代码帮助理解这些方法的具体用法。 #### 1. `split()` 方法 `split()` 方法用于将一个字符串...
### JavaScript截取中文字符串知识点详解 #### 一、引言 在进行文本处理时,我们经常需要对字符串进行截取操作。特别是在处理包含多种字符集(如英文与中文)的字符串时,考虑到不同字符编码长度的差异性,简单地...
Java 字符串截取函数 ...本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该函数使用 `substring` 方法来实现字符串截取,并且可以应用于各种字符串处理场景。
- 截取字符串时要注意字符串的编码,尤其是涉及非ASCII字符时,可能会出现乱码问题。 - 如果截取的长度超过实际字符串长度,`Left`, `Right`, 和 `Mid`函数不会抛出错误,而是返回整个字符串或空字符串。 - 在...
需要注意的是,不同编码方式(如GBK、Big5等)下的汉字可能占用不同数量的字节,因此在实际应用中,需要根据字符串的实际编码方式进行调整。如果你的字符串是其他编码格式,你需要将`getBytes(StandardCharsets.UTF_...
本文将详细解析两种常用的C++ `std::string`截取字符串的方法:`find`和`find_last_of`,以及如何结合使用它们来满足各种字符串处理需求。 1. `find`方法: `find`方法用于在字符串中查找指定子字符串`strSub`的第...
在处理通信数据时,我们经常需要对字符和字符串进行操作,例如将字符转换为字符串,或者从字符串中截取有效字符。以下将详细介绍在TIA博途中如何实现这些操作。 首先,字符转换为字符串的过程通常涉及到ASCII码。...
在C#编程中,有时我们需要根据字节长度来截取字符串,这可能是因为要处理不同编码格式的数据,或者为了适应特定的传输限制。本篇将详细介绍如何在C#中按照字节长度截取字符串,并结合正则表达式进行操作。 首先,...
不同的编程语言对非ASCII字符(如汉字)的处理方式不同。在Python 3中,字符串默认使用Unicode编码,可以直接处理汉字。而在一些其他语言中,如Java,可能需要先将字符串转换为特定的字符编码(如UTF-8)再进行截取...
在大多数编程语言中,都有内置的函数或方法来实现字符串的截取。例如,在Python中,我们可以使用` slicing`操作符 `[]` 来截取字符串的一部分。语法格式如下: ```python str = "这是一个示例字符串" substring = ...
本文将详细介绍如何在批处理脚本中进行字符串截取,并通过具体的例子来说明不同的截取方法。 ### 一、基本概念 在批处理脚本中,字符串的截取主要通过变量扩展的方式完成。具体来说,是通过特殊的语法 `%variable:...
oracle,按特定字符,截取字符串,直接出结果 oracle,按特定字符,截取字符串,直接出结果oracle,按特定字符,截取字符串,直接出结果