广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >使用php分割字符串时出现乱码如何解决
  • 748
分享到

使用php分割字符串时出现乱码如何解决

2023-06-14 09:06:33 748人浏览 薄情痞子
摘要

今天就跟大家聊聊有关使用PHP分割字符串时出现乱码如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。php分割字符串乱码的解决办法:1、通过使用mbstring扩展库的“mb_s

今天就跟大家聊聊有关使用PHP分割字符串时出现乱码如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

php分割字符串乱码的解决办法:1、通过使用mbstring扩展库的“mb_substr()”截取字符串;2、使用自定义的“function sub_str”方法截取字符串。

PHP中使用substr()截取字符串出现中文乱码问题

在PHP程序开发中,经常会执行字符串的截取操作,比如输出信息列表时,标题不宜过长,打印文章摘要时,也要执行一系列的字符串截取操作。遇到这些需求时,我们经常会想到使用substr()方法来实现,substr()对全英文字符串的截取是比较适合的。

但字符串只要出现中文字符,就有可能导致PHP substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会把其后的..拉过来一起做一个字,所以出现了PHP substr中文乱码。

substr --- 取得部份字符串

语法 : string substr (string string, int start [, int length])

说明 :

substr( )传回 string的一部份字符串,由参数 start和 length指定。

如果 start是正数,传回的字符串将会从 string的第 start个字元开始。

Example :

<?php$rest = substr ("abcdef", 1); // returns "bcdef"$rest = substr ("abcdef", 1, 3); // returns "bcd"?>

如果 start是负数,传回的字符串将会从 string结尾的第 start个字开始。

Example :

<?php$rest = substr ("abcdef", -1); // returns "f"$rest = substr ("abcdef", -2); // returns "ef"$rest = substr ("abcdef", -3, 1); // returns "d"?>

如果有给予参数 length而且是正数时,传回的字符串将会从 start传回 length个字元。
如果有给予参数 length而且是负数时,传回的字符串将会结束于 string结尾的第 length个字元。

Example :

<?php$rest = substr ("abcdef", 1, -1); // returns "bcde"?>

对于英文没有问题,我们测试一个中文

<?php$rest = substr ("中国人", 1, -1); // returns "fdsafsda" 就是乱码了?>

这种截取字符的结果,肯定不是我们想要的结果,这种出现PHP substr中文乱码的情况,可能会导致程序无法正常运行。解决办法主要有两种:

一、使用mbstring扩展库的mb_substr()截取就不会出现乱码了。

可以用mb_substr()/mb_strcut()这个函数,mb_substr()/mb_strcut()的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。

<?php  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再加上 ”…”,这样处理中文是没问题了,可是处理英文或数字,这样截取就太短了。

二、自己书写截取函数,但效率不如用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编程频道,感谢大家的支持。

--结束END--

本文标题: 使用php分割字符串时出现乱码如何解决

本文链接: https://www.lsjlt.com/news/269544.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用php分割字符串时出现乱码如何解决
    今天就跟大家聊聊有关使用php分割字符串时出现乱码如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。php分割字符串乱码的解决办法:1、通过使用mbstring扩展库的“mb_s...
    99+
    2023-06-14
  • php字符串部分乱码如何解决
    本篇内容主要讲解“php字符串部分乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php字符串部分乱码如何解决”吧!php字符串部分乱码的解决办法:1、使用“mb_substr...
    99+
    2023-07-05
  • 如何解决php字符串乱码
    本篇内容介绍了“如何解决php字符串乱码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php字符串乱码的解决办法:1、通过iconv把gb2...
    99+
    2023-06-25
  • php字符串分割失败如何解决
    这篇文章主要介绍了php字符串分割失败如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php字符串分割失败如何解决文章都会有所收获,下面我们一起来看看吧。php字符串分割失败的解决办法:1、打开相应的ph...
    99+
    2023-07-05
  • php页面字符出现乱码如何解决
    要解决 PHP 页面字符乱码问题,可以尝试以下几种方法:1. 设置字符编码:在 PHP 页面的头部添加以下代码,指定页面的字符编码为...
    99+
    2023-08-19
    php
  • php 16进制转字符串出现中文乱码如何解决
    本篇内容介绍了“php 16进制转字符串出现中文乱码如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!从数据库中读取数据时出现中文乱码如...
    99+
    2023-07-05
  • php 16进制转字符串出现中文乱码怎么解决
    在使用 PHP 进行 16 进制转字符串操作时,有时会出现中文乱码的问题。这个问题可能出现在很多情况下,比如从数据库中读取数据时,或者是接受用户输入时。本文将介绍一些常见的中文乱码问题,并提供一些解决方法。从数据库中读取数据时出现中文乱码如...
    99+
    2023-05-14
    php
  • 使用HttpServletResponse时出现乱码如何解决
    本篇文章为大家展示了使用HttpServletResponse时出现乱码如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一个完整的http响应包括响应行,若干响应头和响应数据主体三部分构成。如...
    99+
    2023-05-31
    httpservletresponse
  • php执行时出现乱码如何解决
    这篇文章主要介绍“php执行时出现乱码如何解决”,在日常操作中,相信很多人在php执行时出现乱码如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php执行时出现乱码如何解决”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-04
  • 如何解决php截取中文字符串乱码问题
    这篇文章主要介绍“如何解决php截取中文字符串乱码问题”,在日常操作中,相信很多人在如何解决php截取中文字符串乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决php截取中文字符串乱码问题”的疑...
    99+
    2023-06-20
  • php中使用substr截取字符串乱码的解决方法
    这篇文章主要介绍php中使用substr截取字符串乱码的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php substr截取字符串乱码的解决办法:1、使用mbstring扩展库的“mb_substr...
    99+
    2023-06-14
  • PHP中使用mail()函数时出现乱码如何解决
    PHP中使用mail()函数时出现乱码如何解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PHP函数mail()出现乱码的解决方法:先用函数base64_encode() &...
    99+
    2023-06-17
  • php如何使用指定符号分割字符串转数组
    这篇文章主要介绍“php如何使用指定符号分割字符串转数组”,在日常操作中,相信很多人在php如何使用指定符号分割字符串转数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何使用指定符号分割字符串转数组...
    99+
    2023-07-04
  • 解决Java中文乱码问题:使用System.out.println输出中文字符串
    解决Java中文乱码问题:使用System.out.println输出中文字符串 在Java编程中,当我们想要在控制台输出中文字符串时,有时会遇到乱码的问题。本文将介绍如何解决这个问题,并提供相应的源...
    99+
    2023-10-25
    java python 开发语言 Java
  • php向mysql数据库传入字符串乱码如何解决
    今天小编给大家分享一下php向mysql数据库传入字符串乱码如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php向m...
    99+
    2023-07-05
  • 在php中使用fread时出现中文乱码如何解决
    这篇文章将为大家详细讲解有关在php中使用fread时出现中文乱码如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。php fread中文乱码的解决办法:首先创建一个PHP示例文件;然后...
    99+
    2023-06-14
  • 在PHP中使用json_encode时出现中文乱码如何解决
    这期内容当中小编将会给大家带来有关在PHP中使用json_encode时出现中文乱码如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言...
    99+
    2023-06-14
  • PHP中使用Ajax出现乱码如何解决
    这篇文章将为大家详细讲解有关PHP中使用Ajax出现乱码如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb23...
    99+
    2023-06-17
  • Win10系统中命令提示符出现字符乱码如何解决
    本篇文章给大家分享的是有关Win10系统中命令提示符出现字符乱码如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。解决步骤如下:打开控制面板,选择“更改日期、时间或数字格式...
    99+
    2023-06-10
  • 在php中使用mssql出现中文乱码如何解决
    这篇文章给大家介绍在php中使用mssql出现中文乱码如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。php显示mssql中文乱码的解决办法:1、根据页面情况来设置utf-8编码;2、直接在程序中通过iconv函...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作