PHP 一个函数实现字符串反转

这其实还是一道题目OTZ当然不用在意这些细节,写出来之后它已经不算是题目了吧。

但我写的函数有个缺点,那就是它是以length分割的(因为还不会正则表达式),在PHP 语法糖一枚中提到过:

length = 1代表 截取一个字节,所以对于中文不适用。

2014年02月02日更新:PHP 实现中文字符串截取无乱码修复中文支持

中文截取就会出现乱码问题。

补刀:如果不是题目的话可以使用官方自带函数strrev()
扩展阅读:http://www.w3school.com.cn/php/func_string_strrev.asp

先来看一下函数部分吧。

演示

        function reversal($origin) {
            $result = "";                            //设定初值

            while (strlen($origin) > 0) {
                $result .= substr($origin, -1);        //截取最后一个
                $origin = substr($origin, 0, -1);    //截取除了最后一个
            }

            return $result;
        }

思路就是一个个截取了之后反向拼接,有点像刀削面(?)(就知道吃)

完整版的源码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Reversal</title>
</head>
<body>
    <form action="reversal.php" method="post">
        <input type="text" name="str" placeholder="输入一个字符串">
        <input type="hidden" name="shot" value="shot">
        <input type="submit" value="发射!">
    </form>

    <?php 
        if(!empty($_POST['shot'])) {
            $problem = FALSE;

            if(empty($_POST['str'])) {
                $problem = TRUE;
                echo '请输入字符串╮(╯-╰)╭';
            }

            if(!$problem) {
                $origin = $_POST['str'];
                $result = reversal($origin);

                echo '原始:' . $origin . '<br/>';
                echo '结果:' . $result . '<br/>';
            }
        }


        function reversal($origin) {
            $result = "";                            //设定初值

            while (strlen($origin) > 0) {
                $result .= substr($origin, -1);        //截取最后一个
                $origin = substr($origin, 0, -1);    //截取除了最后一个
            }

            return $result;
        }
    ?>
</body>
</html>

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 成品, 源码, 代码段, 题目

添加新评论