`
gzycnet
  • 浏览: 32129 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

PHP截取字符串,支持UTF-8、GB2312、GBK多种字符集

PHP 
阅读更多
PHP截取字符串,用函数截取字符串的专题,支持UTF-8、GB2312、GBK多种字符集。
截取GB2312中文字符串
<?php
//截取中文字符串
function mysubstr($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;
}
?>

截取utf8编码的多字节字符串
<?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
return preg_replace(#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,.$from.}.
((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,.$len.}).*#s,
$1,$str);
}
?>

UTF-8、GB2312都支持的汉字截取函数
<?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/

function cut_str($string, $sublen, $start = 0, $code = UTF-8)
{
if($code == UTF-8)
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $string, $t_string);

if(count($t_string[0]) - $start > $sublen) return join(, array_slice($t_string[0], $start, $sublen))."...";
return join(, array_slice($t_string[0], $start, $sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = ;

for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen))
{
if(ord(substr($string, $i, 1))>129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if(ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
return $tmpstr;
}
}

$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, gb2312);
?>

PHP字符截取函数
<?php
function sysSubStr($String,$Length,$Append = false)
{
if (strlen($String) < = $Length )
{
return $String;
}
else
{
$I = 0;
while ($I < $Length)
{
$StringTMP = substr($String,$I,1);
if ( ord($StringTMP) >=224 )
{
$StringTMP = substr($String,$I,3);
$I = $I + 3;
}
elseif( ord($StringTMP) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$StringLast[] = $StringTMP;
}
$StringLast = implode("",$StringLast);
if($Append)
{
$StringLast .= "...";
}
return $StringLast;
}
}

$String = " 简单、精彩、通用";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>

分享到:
评论

相关推荐

    php截取字符串

    - `$charset`:字符串的字符集,默认为'gbk',如果字符串是UTF-8编码,应设置为'utf-8'。 现在,让我们看看如何使用`strcut()`来截取UTF-8编码的字符串: ```php $text = "你好,世界!"; $substring = strcut($...

    php截取字符串之截取utf8或gbk编码的中英文字符串示例

    给出的示例中,有一个名为`strlen_weibo()`的函数,该函数接受两个参数:要计算的字符串和字符串的编码类型(目前只支持GBK和UTF-8)。函数通过逐字节分析字符串,根据不同的字节值判断字符类型,从而正确计算出微博...

    php页面,mysql数据库转utf-8乱码,utf-8编码问题总结

    在构建多语言、国际化的网站时,编码是一个关键问题,特别是从GBK或GB2312等简体中文编码向UTF-8转换时。本文主要总结了PHP页面和MySQL数据库在转换为UTF-8编码时可能遇到的问题及解决方法。 首先,PHP页面的编码...

    PHP 计算字符串长度

    `substr()`函数可用于截取字符串: ```php $str = "这是一段示例文本"; $substring = substr($str, 0, 5); // 输出: "这是" ``` `substr()`接受三个参数:原始字符串、起始位置(从0开始)和截取长度。如果省略...

    php-mbstring-5.4.16-42.el7.x86_64.zip

    它为PHP提供了处理多种编码字符集的能力,包括ASCII、UTF-8、EUC-JP、ISO-8859-1等。通过这个扩展,开发者可以在不同编码之间进行转换,同时处理各种复杂字符串操作,如字符串长度计算、子串截取、编码检测等。 二...

    PHP通过iconv将字符串从GBK转换为UTF8字符集

    GB2312、GBK和UTF-8是三种常见的字符编码方式,其中GB2312和GBK是中国国家标准的简体中文字符编码,而UTF-8则是国际上广泛使用的多字节字符编码。在处理中文网站或应用的数据时,常常需要将GBK编码转换为UTF-8编码,...

    php中计算中文字符串长度、截取中文字符串的函数代码

    另一个截取中文字符串的通用方法是`csubstr`函数,它可以处理不同的字符编码,如`utf-8`, `gb2312`, `gbk`, 和 `big5`。这个函数使用`mb_substr`函数(如果存在)来执行截取,或者使用正则表达式匹配和字符数组切片...

    UTF8 相关的PHP源代码

    例如,`mb_detect_encoding($str, ['UTF-8', 'GBK'], true)`会尝试检测并返回字符串的编码,如果检测到是UTF8,则返回`'UTF-8'`。 4. **UTF8字符串分割** 对于UTF8字符串的分割,`mb_split()`函数可以按照指定的...

    ThinkPHP的截取字符串函数无法显示省略号的解决方法

    在实现自定义的msubstr函数时,需要处理不同字符集的编码规则,包括UTF-8、GBK、GB2312和Big5等常见的编码方式。这里使用了正则表达式来匹配和处理不同编码规则的字符串,然后根据传入的字符集参数进行匹配。使用...

    PHP MySQL程序开发中的乱码产生原因及解决方案分析.pdf

    5. **数据库字段类型**:对于存储中文字符的字段,应选择可存储多字节字符的类型,如`VARCHAR`或`TEXT`,并设定其字符集为UTF-8。 6. **字符串操作**:在PHP中处理字符串时,如拼接、截取等,要注意编码的一致性,...

    比较discuz和ecshop的截取字符串函数php版

    为了克服这些局限性,我们可以编写一个更通用的字符串截取函数,考虑使用`mb_strlen`和`mb_substr`来处理UTF-8编码的字符串。这样可以确保即使在处理包含特殊字符的字符串时也能正确截取。 ```php function ...

    PHP针对中英文混合字符串长度判断及截取方法示例

    在本示例中,默认采用UTF-8编码,但函数也提供了一个字符集参数$charset,以便根据不同的编码需求来进行相应的编码转换。 除了以上的函数实现,本文还提供了一些在线字符统计工具的链接,供开发者使用。这些工具...

    PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数

    - `$encoding`:字符串的字符编码,如UTF-8、GBK等。确保这个编码与字符串的实际编码一致,否则可能会出现乱码。 以下是一个`mb_substr()`的使用示例: ```php $str = '软件开发网:https://www.jb51.net'; echo ...

    ThinkPHP 模板substr的截取字符串函数详解

    `msubstr`函数的主要目的是兼容不同的多字节字符集(如UTF-8、GBK、GB2312等),确保在没有`mb_substr`或`iconv_substr`函数可用的情况下也能正常工作。以下是`msubstr`函数的详细说明: ```php function msubstr($...

    经典php冒泡排序面试题

    `CSubstr`函数是更为通用的多字节字符集字符串截取函数,支持GB2312、GBK、UTF-8和BIG5等编码。首先检查是否支持`mb_substr`函数,如果有则直接使用,否则使用正则表达式匹配字符集的特征,进行截取。 这些函数的...

    PHP实现截取中文字符串不出现?号的解决方法

    例如,对于非UTF-8编码的字符串或者包含其他多字节字符集(如GBK)的字符串,可能需要更复杂的处理方式。此外,这种方法也无法处理字符串中包含全角字符或其它多字节字符的情况。在实际应用中,可以考虑使用PHP的...

    php的GD库imagettftext函数解决中文乱码问题

    对于处理中文字符串,了解不同的字符编码(如GBK、GB2312、Big5、UTF-8等)及其转换至关重要。`iconv()`函数是PHP中进行字符编码转换的利器,它可以有效地解决因编码不匹配导致的乱码问题。在实际开发中,确保正确...

    php字符集转换

    例如,在文件内容中提到的iconv("UTF-8","GB2312//IGNORE",$data),当UTF-8编码的字符串中包含GB2312编码中不存在的字符时,这些字符将被忽略。 除了“//IGNORE”外,还可以使用“//TRANSLIT”选项。这个选项在转换...

Global site tag (gtag.js) - Google Analytics