返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php怎么实现字符串无乱码翻转
  • 284
分享到

php怎么实现字符串无乱码翻转

php翻转 2016-11-27 21:11:03 284人浏览
摘要

php实现字符串无乱码翻转的方法:1、创建一个PHP示例文件并设置编码为utf8;2、用mb_strlen函获取算utf8字符串的长度;3、将字符串拆开放入数组;4、将数组按键名大小反转;5、将数组中单个字符元素重新组合成字符串即可。

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑

php怎么实现字符串无乱码翻转?

PHP中实现中文字符串反转避免乱码的方法 :

今天博主在网上看php面试题的时候,看到了这么一个问题,如何实现字符串反转,当时想不是有一个内置函数strrev能实现这个功能吗?后来试了一下,这个函数只能对英文字符进行反转,对中文会有乱码出现。主要原因还是编码上的问题。

PHP中utf-8编码中文当作3个字节计算,gb2312当作2个字节计算。所以想要实现中文字符串的一些功能,首先就要解决编码问题。

今天这个功能就是从编码处下手的。接下来开始讲实现的功能,今天要用到这么几个函数:

is_string()//判断参数是否为字符串,这个大家应该都知道
mb_check_encoding()//用来检查给定的字符串是否属于指定的编码
mb_strlen()//用来获取字符串长度
mb_substr()//用来截取字符串中的字符
krsort()//将数组按键名由大到小排序上述

上面用到了3个mb开头的函数,mb开头的函数都是用于处理多字节字符串的,主要是能指定字符串编码。

mb_check_encoding()接受两个参数,第一个参数要是字符串,第二个参数是输入一个字符编码,然后判断该字符串是否属于该编码,返回一个bool值,若省略第二个参数则默认为内部编码,可通过mb_internal_encoding()查看。

mb_strlen()有两个参数,第一个是字符串内容,第二个是字符串的编码。

mb_substr()有四个参数,第一个是要截取的字符串内容,第二个是开始截取的位置,第三个是截取的长度,第四个是字符串的编码(在本例中要选择utf-8,其他编码都不会得到正确的结果)。

接下来就是完整的代码了,简略的注释都已经标注好了,其实只要看一遍都能看懂:

<?php
    header("Content-type:text/html;charset=utf-8");
    $s="这是我的技术博客,欢迎多多来访!";
                             
    function str_rev($str){
        //先判断参数是否为字符串,且为UTF8编码
        if(!is_string($str)||!mb_check_encoding($str,"utf-8")){
            die("输入的不是utf8类型的字符串");
        }
                                 
        //用mb_strlen函获取算utf8字符串的长度
        $length=mb_strlen($str,"utf-8");
                                 
        //声明一个数组备用
        $arr=array();
                                 
        //将字符串拆开放入数组
        for($i=0;$i<$length;$i++){
            $arr[$i]=mb_substr($str,$i,1,"utf-8");
        }
                                 
        //将数组按键名大小反转
        krsort($arr);
                                 
        //将数组中单个字符元素重新组合成字符串
        $str=implode("",$arr);
                                 
        //将翻转后的字符串返回
        return $str;
    }
                             
    echo $s."<br>";
    echo str_rev($s);

?>

如果文中有任何错误,敬请指出,以便完善。

--结束END--

本文标题: php怎么实现字符串无乱码翻转

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

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

猜你喜欢
  • php怎么实现字符串无乱码翻转
    php实现字符串无乱码翻转的方法:1、创建一个PHP示例文件并设置编码为utf8;2、用mb_strlen函获取算utf8字符串的长度;3、将字符串拆开放入数组;4、将数组按键名大小反转;5、将数组中单个字符元素重新组合成字符串即可。 ...
    284
    2023-03-22
    php 翻转
  • php如何实现字符串翻转
    在php中使用strrev()函数对字符串进行翻转,具体方法如下:strrev()函数作用:php中strrev()函数的作用是用于反转一个字符串,并输出。strrev()函数语法:strrev(string)参数:string:需要反转的 ...
    898
    2023-03-22
    PHP 字符串
  • php字符串乱码怎么解决
    php字符串乱码的解决办法:1、通过iconv把gb2312置换成utf-8;2、通过mb_convert_encoding函数转换编码。 ...
    1011
    2023-03-22
    php 乱码
  • php怎么实现数字转字符串
    php实现数字转字符串的方法:1、创建一个PHP示例文件;2、定义一个数字;3、通过“string strval ( mixed $var )”方法将数字转成字符类型即可。 ...
    1071
    2023-03-22
    php 数字 字符串
  • php 怎么实现asc转为字符串
    php实现asc转为字符的方法:1、创建一个PHP示例文件;2、通过代码“$i = 65;$ch = chr($i);var_dump($ch);”实现ASCII码转字符即可。 ...
    948
    2023-03-22
    php asc
  • php怎么实现字符串的反转
    实现字符串反转的两种方法:1、使用for语句倒序遍历字符串,在循环体中用substr()函数从后向前截取一个个字符,并拼接成新字符串,语法“$r=;for($i=字符串长度-1;$i>=0;$i--){$r.=substr($str,$i,1);}”;2、直接利用strrev()函数反转字符串,语法“strrev($str)”。本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑 ...
    968
    2023-03-22
    php字符串 php
  • 利用perl、python、php、shell、sed、awk、c 实现字符串的翻转
    原题:Q:有a.txt文件,里面内容如下 1234569 abcABCabc 要求使用awk打印出以下结果 987654321 cbaCBAcbaA:shell:[root@vps tmp]# rev a.txt 9654321 ...
    380
    2023-03-22
    字符串 php python
  • php字符串怎么去掉重复字符
    去重步骤:1、使用str_split()函数将字符串转为字符数组,语法“str_split(字符串,1)”;2、使用array_unique()函数去除字符数组中的重复值,语法“array_unique(字符数组)”;3、使用implode()函数将去重后的字符数组还原成字符串即可,语法“implode(去重后的字符数组)”。本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑在 ...
    587
    2023-03-22
    php php字符串
  • php怎么进行字符串替换
    字符串替换方法:1、使用str_replace()函数,语法“str_replace(查找值,替换值,字符串)”;2、使用substr_replace()函数,语法“substr_replace(字符串,替换值,开始位置,替换长度)”。 ...
    576
    2023-03-22
    php 字符串替换
  • php怎么反转字符串abcdefg
    反转方法:1、用strrev()函数,语法为“strrev("abcdefg")”;2、用for语句和substr(),语法“for($i=字符串长度-1;$i>=0;$i--){$r.=substr("abcdefg",$i,1);}”。 ...
    626
    2023-03-22
    php 字符串反转
  • php怎么实现对字符串的排序
    实现步骤:1、利用str_split()函数将字符串转为字符数组,语法“str_split(字符串)”;2、使用asort()或arsort()函数来对字符数组进行升序排序或降序排序,语法“asort(字符数组)”或“arsort(字符数组)”;3、使用implode()函数将排序后的字符数组转回字符串,语法“implode(排序后字符数组)”。前端(vue)入门到精通课程:进入学习本教程操作环境: ...
    434
    2023-03-22
    php php数组 php字符串
  • php怎么在字符串首部增加字符
    两种实现方法:1、使用字符串连接符“.”将指定字符拼接在字符串开头即可,语法“指定字符 . 字符串”;2、使用substr_replace()函数在字符串开头插入指定字符串,只需要将该函数的第二个参数设置为指定字符,第三个和第四个参数设置为0即可,语法“substr_replace(字符串,指定字符,0,0)”。本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑在PHP中,可以 ...
    844
    2023-03-22
    php php字符串
  • php怎么去掉字符串中的某串字符串
    php去掉字符串中的某串字符串的方法:1、创建一个PHP示例文件;2、使用str_replace函数或者preg_replace函数将指定字符串替换为空即可。 ...
    286
    2023-03-22
    php
  • php怎么实现字符串反转和数组反转
    在php中,可以使用strrev()和array_reverse()函数实现字符串反转和数组反转。strrev()用于反转字符串,语法为“strrev($string)”。array_reverse()用于反转数组,语法“array_reverse($array,$preserve)”;参数“$preserve”可省略,默认值为“false”,如果值设为TRUE会保留数字的键。本教程操作环境:win ...
    343
    2023-03-22
    php字符串 php php数组
  • php sql 字符串怎么转日期
    php sql字符串转日期的方法:1、通过“date("Y-m-d",strtotime(""));”方式转换;2、通过“date("M-d-Y",mktime(0,0,0,$month,$day,$year));”方式转换。 ...
    1003
    2023-03-22
    php 字符串 日期
  • json字符串怎么转为php变量
    在php中,可以利用json_decode()函数来将json字符串转换为PHP变量;该函数可用于解码JSON字符串,它接受一个JSON编码的字符串并且把它转换为PHP变量,语法“json_decode($json)”。 ...
    665
    2023-03-22
    json字符串 php变量
  • php 字符串怎么转url实体
    php字符串转url实体的方法:1、通过parse_url()解析url;2、对url的中文进行编码和解码;3、通过htmlentities等方法将字符串转换为html实体即可。 ...
    968
    2023-03-22
    php
  • php怎么去掉字符串空行
    php去掉字符串空行的方法:1、创建一个PHP示例文件;2、通过“function DeleteHtml($str){...}”方法去掉html中的空行或空白即可。 ...
    234
    2023-03-22
    php 空行
  • php怎么将字符串转为小数
    php将字符串转为小数的方法:1、使用number_format()函数,语法“number_format($str,小数位数值)”;2、利用sprintf()函数格式化字符串,语法“sprintf("%.小数位数值f",$str)”。 ...
    234
    2023-03-22
    php 字符串转小数
  • php怎么将字符串重复几次
    在PHP中,可以使用str_repeat()函数来将字符串重复指定的次数,并返回被重复的字符串;语法“str_repeat(string,repeat)”,参数“repeat”规定字符串将被重复的次数,其值必须大于等于0。 ...
    850
    2023-03-22
    php 字符串重复
热门问答
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作