php字符串截取乱码怎么办-PHP问题

资源魔 44 0

php字符串截取乱码的处理方法:一、应用mbstring扩大库的【mb_substr()】截取;二、截取【UTF-8】编码下字符串,代码为【$str = trim($str);】。

php字符串截取乱码的处理方法:

1、应用mbstring扩大库的mb_substr()截取就没有会呈现乱码了。

能够用mb_substr()/mb_strcut()这个函数,mb_substr()/mb_strcut()的用法与substr()类似,只是正在mb_substr()/mb_strcut最初要退出多一个参数,以设定字符串的编码,

然而普通的效劳器都没关上php_mbstring.dll,需求正在php.ini正在把php_mbstring.dll关上。

echo mb_substr("php中文字符encode",0,4,"utf-8");

假如未指定最初一个编码参数,会是三个字节为一个中文,这就是utf-8编码的特性,若加之utf-8字符集阐明,以是,是以一个字为单元来截取的。

应用的时分要留意php文件的编码,以及网页显示时的编码。应用这个mb_substr办法要事前晓得字符串的编码,假如没有晓得编码,就需求判别,mbstring库还提供了mb_check_encoding来测验字符串编码,但还没有欠缺。

PHP 自带几种字符串截取函数,此中罕用到的就是 substr 以及 mb_substr。前者正在解决中文时,GBK 为 2 个长度单元,UTF 为 3 个长度单元,后者指定编码后,一个中文即为 1 个长度单元。

substr 有时会截 1/3 个中文或半个中文,会显示乱码,绝对来讲 mb_substr 更适宜咱们应用。不外有时分 mb_substr 就显患上没有那末好用了。例如我要显示一个小图片的扼要信息,5 个中文正好,超越 5 个就截取前4再加之 ”…”,这样解决中文是没成绩了,可是解决英文或数字,这样截取就过短了。

2、本人书写截取函数,但效率没有如用mbstring扩大库来患上高。上面是ecshop外面的截取UTF-8编码下字符串的函数。

function sub_str($str, $length = , $append = true)
{
  $str = trim($str);
  $strlength = strlen($str);
  if ($length == || $length >= $strlength)
  {
    return $str; //截取长度等于或年夜于等于本字符串的长度,前往字符串自身
  }
  elseif ($length < ) //假如截取长度为正数
  {
    $length = $strlength + $length;//那末截取长度就等于字符串长度减去截取长度
    if ($length < )
    {
      $length = $strlength;//假如截取长度的相对值年夜于字符串自身长度,则截取长度取字符串自身的长度
    }
  }
  if (function_exists('mb_substr'))
  {
    $newstr = mb_substr($str, , $length, EC_CHARSET);
  }
  elseif (function_exists('iconv_substr'))
  {
    $newstr = iconv_substr($str, , $length, EC_CHARSET);
  }
  else
  {
    //$newstr = trim_right(substr($str, , $length));
    $newstr = substr($str, , $length);
  }
  if ($append && $str != $newstr)
  {
    $newstr .= '...';
  }
  return $newstr;
}

想理解更多编程学习,敬请存眷php培训栏目!

以上就是php字符串截取乱码怎样办的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题 字符串截取乱码

抱歉,评论功能暂时关闭!