广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php 字符串长度不一致怎么办
  • 785
分享到

php 字符串长度不一致怎么办

php字符串 2023-05-14 20:05:35 785人浏览 八月长安
摘要

PHP字符串长度不一致的解决办法:1、通过mb_detect_encoding()函数查看字符串的编码方式;2、通过mb_strlen函数查看具体字符长度;3、使用正则表达式“preg_match_all('/[\x{4e00}-\

PHP字符串长度不一致的解决办法:1、通过mb_detect_encoding()函数查看字符串的编码方式;2、通过mb_strlen函数查看具体字符长度;3、使用正则表达式“preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);”剔除非中文字符即可。

php 字符串长度不一致怎么办

教程操作环境:windows10系统、php8.1版、DELL G3电脑

php 字符串长度不一致怎么办?

php 中字符串一样但长度不等的问题

问题:

353b961cc8683620091dd5ce9b32cd7.jpg

如图所示 咋眼看去两个一样的中文字符串“后勤保障部”,但一个长度为21 一个为15。

首先直觉可能会认为是编码方式不一样导致的,
通过mb_detect_encoding()函数查看两个字符串的编码方式 代码如下

<?php
header("Content-Type: text/html;charset=utf-8"); 

$data[0]=$str1="后勤保障部‍";
$data[1]=$str2="后勤保障部";
var_dump($data);

//查看编码方式
$encode1 = mb_detect_encoding($str1,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));
$encode2 = mb_detect_encoding($str2,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));
echo "str1='".$str1."'"."&emsp;编码:".$encode1."</br>";
echo "str2='".$str2."'"."&emsp;编码:".$encode2."</br>";
?>

但输出结果都是UTF-8

6761645046379c5e985f8c66e254dda.jpg

那么是什么原因呢 ,我们在输出看下具体字符长度

<?php
header("Content-Type: text/html;charset=utf-8"); 

$data[0]=$str1="后勤保障部‍";
$data[1]=$str2="后勤保障部";
var_dump($data);

//查看编码方式
$encode1 = mb_detect_encoding($str1,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));
$encode2 = mb_detect_encoding($str2,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));

//当mb_strlen的内码选择为UTF-8的时候,则会将中文字符当成一个字符
//strlen,得到的是字符串所占的字节数
echo "str1='".$str1."'".":&emsp;字符长度:".mb_strlen($str1).":&emsp;字节长度:".strlen($str1)."&emsp;编码:".$encode1."</br>";
echo "str2='".$str2."'".":&emsp;字符长度:".mb_strlen($str2).":&emsp;字节长度:".strlen($str2)."&emsp;编码:".$encode2."</br>";
?>

输出结果如下:

27d1cf2e1e07cd19b8d3895d81b1e24.jpg

发现字符串str1有7个中文字符,但实际只显示了5个,也就是“后勤保障部”

通过截取str1最后两个字符查看

//截取str1后面两个未显示字符
$res=mb_substr($str1, 5,2);
echo "最后两字符:".$res."</br>";
echo mb_strlen($res);

无法echo显示,但确实占有两个字符

如果实际要求这看上去一样的字符串就相等的话,需要进行处理,处理就是剔除非中文字符:

//剔除str1字串中未显示的字符(非中文字符)
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);
$str1 = join('', $matches[0]);

最终代码如下

<?php
header("Content-Type: text/html;charset=utf-8"); 

$data[0]=$str1="后勤保障部‍";
$data[1]=$str2="后勤保障部";
var_dump($data);

//查看编码方式
$encode1 = mb_detect_encoding($str1,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));
$encode2 = mb_detect_encoding($str2,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));

//当mb_strlen的内码选择为UTF-8的时候,则会将中文字符当成一个字符
//strlen,得到的是字符串所占的字节数
echo "str1='".$str1."'".":&emsp;字符长度:".mb_strlen($str1).":&emsp;字节长度:".strlen($str1)."&emsp;编码:".$encode1."</br>";
echo "str2='".$str2."'".":&emsp;字符长度:".mb_strlen($str2).":&emsp;字节长度:".strlen($str2)."&emsp;编码:".$encode2."</br>";

//截取str1后面两个未显示字符
echo "</br>------------------截取str1后面两个未显示字符---------------------</br>";
$res=mb_substr($str1, 5,2);
echo "str1最后两字符:&emsp;".$res."</br>";
echo "str1长度:&emsp;".mb_strlen($res)."</br>";

//比较
echo "</br>--------------------------相等比较----------------------------------</br>";
echo "str1 与 str2比较:&emsp;";
echo strcomp($str1,$str2)."</br>";
echo "str2 与 str2比较:&emsp;";
echo strcomp($str2,$str2)."</br>";


//剔除str1字串中非中文
preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);
$str1 = join('', $matches[0]);

echo "</br>---------------------剔除str1字串中非中文后----------------------</br>";
echo "str1='".$str1."'".":&emsp;字符长度:".mb_strlen($str1).":&emsp;字节长度:".strlen($str1)."&emsp;编码:".$encode1."</br>";
echo "str1 与 str2比较:&emsp;";
echo strcomp($str1,$str2)."</br>";

function strcomp($str1,$str2){ 
  if($str1 == $str2){ 
    return "相等"; 
  }else{ 
    return "不等"; 
  } 
} 

?>

运行结果
f4f06f8edf48fd52687a68fe87884cc.jpg


注:
将21字节的str1复制到phpmyadmin的sql输入框,显示如下

91e36c733c4d7b750836cb0b217900d.jpg

嗯 就是多的那两个字符

以上就是php 字符串长度不一致怎么办的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: php 字符串长度不一致怎么办

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

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

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

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

下载Word文档
猜你喜欢
  • php 字符串长度不一致怎么办
    php字符串长度不一致的解决办法:1、通过mb_detect_encoding()函数查看字符串的编码方式;2、通过mb_strlen函数查看具体字符长度;3、使用正则表达式“preg_match_all('/[\x{4e00}-\...
    99+
    2023-05-14
    php 字符串
  • php字符串长度不一致如何解决
    本篇内容主要讲解“php字符串长度不一致如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php字符串长度不一致如何解决”吧!php字符串长度不一致的解决办法:1、通过mb_detect_e...
    99+
    2023-07-05
  • php怎么求字符串长度
    这篇文章主要介绍“php怎么求字符串长度”,在日常操作中,相信很多人在php怎么求字符串长度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么求字符串长度”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-02
  • java字符串长度过大怎么办
    如果Java字符串的长度超过了Java平台所支持的最大长度,那么可以考虑以下几种解决方案:1. 使用字符数组:将字符串拆分成多个较短...
    99+
    2023-09-04
    java
  • php怎么计算字符串长度
    本篇内容主要讲解“php怎么计算字符串长度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么计算字符串长度”吧!php如何计算字符串长度?下面本篇文章给大家介绍一下php中计算字符串长度的...
    99+
    2023-06-20
  • php超出字符长度怎么办
    本文操作环境:Windows7系统、PHP7.1、Dell G3。php超出字符长度怎么办?php显示指定长度的字符串,超出长度以省略号(...)填补尾部显示 function cutSubstr($str,$len=30){ ...
    99+
    2020-04-26
    php 字符
  • php怎么解决同样的字符串长度不一样问题
    这篇文章主要介绍“php怎么解决同样的字符串长度不一样问题”,在日常操作中,相信很多人在php怎么解决同样的字符串长度不一样问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么解决同样的字符串长度不一...
    99+
    2023-07-05
  • php怎么获取字符串的长度
    本篇内容介绍了“php怎么获取字符串的长度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在php中,我们需要了解字符串的长度,方便去做一些事...
    99+
    2023-06-20
  • 怎么修改PHP字符串长度限制
    这篇文章主要介绍了怎么修改PHP字符串长度限制的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么修改PHP字符串长度限制文章都会有所收获,下面我们一起来看看吧。PHP字符串长度限制PHP字符串的长度由配置文件中...
    99+
    2023-07-05
  • php怎么遍历字符串数组长度
    在 PHP 中,字符串是一个非常常见的数据类型,而数组是一种其中很受欢迎的类型。PHP 为处理字符串数组提供了很多内置函数,其中包括在遍历字符串数组长度时非常有用的函数。首先,我们需要了解什么是字符串数组。字符串数组是由一组字符串元素组成的...
    99+
    2023-05-19
  • php怎么实现字符串长度不够前面补0
    在php中,可以使用str_pad()函数实现字符串不够前面补0。该函数可以使用指定字符将字符串填充为指定长度,只需要将第三个参数设置为“0”,第四个参数设置为“STR_PAD_LEFT”即可实现字符串长度不够在前面用0补位,语法“语法“s...
    99+
    2022-08-16
    php php字符串
  • mysql中怎么读取一个字符串长度
    mysql中读取一个字符串长度的示例:mysql> select * from test;+----+------------+-------+-----------+| i...
    99+
    2022-10-23
  • c++怎么计算字符串长度
    在C++中,可以使用`std::string`类的`length()`函数或者`size()`函数来计算字符串的长度。 以下是使用`...
    99+
    2023-10-28
    c++
  • JavaScript中怎么求字符串长度
    这篇文章给大家介绍JavaScript中怎么求字符串长度,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在JavaScript中,可以利用String对象的length属性来求字符串长度...
    99+
    2022-10-19
  • mysql怎么查看字符串长度
    mysql中查看字符串长度的方法查看字符串长度函数:LENGTH使用方法如下:查看某字符串的长度SELECT LENGTH('12115521');查看用户名长度小于6个字符的用户SELECT * FROM user WHER...
    99+
    2022-10-16
  • oracle怎么获取字符串长度
    在Oracle中,可以使用LEN函数或者LENGTH函数来获取字符串的长度。1. 使用LEN函数:   ```sql &n...
    99+
    2023-08-19
    oracle
  • shell怎么判断字符串长度
    在Shell中,可以使用`expr length`命令来获取字符串的长度。具体语法如下:```shellexpr length "$...
    99+
    2023-08-16
    shell
  • php如何解决同样的字符串长度不一样问题
    PHP是一种广泛使用的服务端脚本语言,用来生成动态网页。在PHP中,字符串是一个经常使用的数据类型,但在处理一些字符串的时候,可能会出现同样字符串长度不一样的情况。在本文中,我们将探讨这个问题的原因以及如何解决它。字符编码问题在PHP中,字...
    99+
    2023-05-14
    php php字符串
  • java怎么获取字符串字节长度
    在Java中,可以使用`getBytes()`方法获取字符串的字节长度。该方法会返回字符串的字节数组,然后可以使用`length`属...
    99+
    2023-08-31
    java
  • mysql中怎么计算字符串长度
    这篇文章给大家介绍mysql中怎么计算字符串长度,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  mysql中计算字符串长度函数  1、GBK 编码  char_length 1个中文...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作