以前在截取
字符
串的时候,字母和数字,都不会出现太多的问题,
尤其是中文
,一截就会出先:把某个汉字给截成两办了,
这会儿就会出现乱码!
因此想大家提供,两个函数
绝对好用:
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
分享到:
相关推荐
4. **字符串处理技巧**:在易语言中,可以结合其他字符串处理函数,如`取字符串长度`、`截取字符串`等,配合`IsTextUTF8`来实现更复杂的文本操作,例如将非UTF-8字符串转换为UTF-8,或者从UTF-8字符串中提取特定部分...
实际应用这个函数时,只需将需要截取的字符串和截取长度作为参数传递给`truncate_utf8_string`函数,即可完成UTF-8格式字符串的正确截取。例如: ```php $str = "这是一个UTF-8编码的字符串示例。"; echo truncate_...
* 自定义UTF-8编码下的中文字符串截取函数 * @param string $str 需要截取的字符串 * @param int $start 开始位置 * @param int $length 截取长度 * @return string 截取后的字符串 * @author 2582308253@qq....
在处理中文字符截断时,由于UTF-8编码每个中文字符占用3个字节,直接使用字符串截取函数可能会导致截断位置位于字符中间,引发乱码。这时可以使用特定的函数,如上面提到的`get_brief_str()`函数,它会根据UTF-8编码...
在给定的文件中,有两个自定义的函数,`substr_for_gb2312` 和 `substr_for_utf8`,它们分别用于在GBK和UTF-8编码下正确地截取中文字符串。 首先,我们来看`substr_for_gb2312`函数。GBK是GB2312编码的扩展,它是一...
4. **编码回原格式**:如果需要,将截取后的Unicode字符串重新编码回原始格式,使用`str.encode()`函数,例如:`trimmed_unicode_str.encode('utf-8')`。 支持多种编码格式时,需要在上述步骤中添加额外的逻辑。...
本示例主要探讨如何正确地截取UTF-8和GBK编码的中英文字符串,以适应特定的需求,例如微博的字数限制规则。 首先,我们要明白PHP内置的`strlen()`函数用于计算字符串的字节数,而非字符数。对于UTF-8编码的中文字符...
- `$charset`:字符串的字符集,默认为'gbk',如果字符串是UTF-8编码,应设置为'utf-8'。 现在,让我们看看如何使用`strcut()`来截取UTF-8编码的字符串: ```php $text = "你好,世界!"; $substring = strcut($...
该PHP类提供了两种不同的编码方式(UTF-8和GBK)下的中文字符串截取功能。具体包括以下几个关键函数: 1. **smarty_modifier_truncate_utf8**: 用于UTF-8编码下的中文字符串截取。 2. **gbk_strlen**: 计算GBK编码...
在ThinkPHP中,字符截取是一个非常常见的操作,而msubstr()函数就是ThinkPHP中用于实现字符截取的内置函数。 msubstr()函数的主要功能是从指定的字符串中截取特定长度的字符。它的基本语法为:msubstr($str, $start...
开发过程中的一些实用工具函数源码:获得当前程序的路径、获得ini文件内容、设置ini文件内容、获得ini的节点名称、校验文件/路径是否存在、创建路径、获得/写入文件内容/遍历文件夹、字符串转换、文件复制、字符编码...
例如,`mb_detect_encoding($str, ['UTF-8', 'GBK'], true)`会尝试检测并返回字符串的编码,如果检测到是UTF8,则返回`'UTF-8'`。 4. **UTF8字符串分割** 对于UTF8字符串的分割,`mb_split()`函数可以按照指定的...
为了克服这些局限性,我们可以编写一个更通用的字符串截取函数,考虑使用`mb_strlen`和`mb_substr`来处理UTF-8编码的字符串。这样可以确保即使在处理包含特殊字符的字符串时也能正确截取。 ```php function ...
/* * @todo 中文截取,支持gb2312,gbk,utf-8,big5 * * @param string $str 要截取的字串 * @param int $start 截取起始位置 * @param int $length 截取长度 * @param string $charset utf-...
另一个截取中文字符串的通用方法是`csubstr`函数,它可以处理不同的字符编码,如`utf-8`, `gb2312`, `gbk`, 和 `big5`。这个函数使用`mb_substr`函数(如果存在)来执行截取,或者使用正则表达式匹配和字符数组切片...
在这个程序中,`gbkToUtf8`函数用于将GBK字符串转换为UTF-8,然后在`main`函数中,我们截取转换后的字符串并打印出来。 通过以上讲解,你应该对Go语言中的字符串切片和字符编码转换有了深入理解。在实际开发中,...
同样,UTF-8和GBK(即GB18030的简化版本)也可能产生类似的误判。 为了解决这个问题,我们可以调整`mb_detect_encoding`的参数,尤其是编码检查的顺序。通常,将最有可能的编码类型放在数组的前面,可以减少误判的...