PHP字符串反转方法

PHP处理字符串反转的常用的几种方法


/**
 *  [字符串反转常用的几种方法]
 *--------------------------------------
 *  @author     Tacks <tacks321@qq.com>
 *  @link       <https://github.com/Tacks9>
 *  @copyright  PHP Tool Function (2019-12-13)
 *--------------------------------------
 */

class StringReverse {

    /**
     * 内置函数strrev <https://www.php.net/manual/zh/function.strrev.php>
     *         
     * @param  string $str
     * @return string 
     */
    public function strRev1($str) {
        return strrev($str);
    }

    /**
     * 倒叙遍历追加到新的字符串中(使用新的字符串存储)
     * 
     * @param string $str
     * @param string $new_str
     */
    public function strRev2($str) {
        $len     = strlen($str);
        $new_str = '';
        while($len) {
            $new_str .= $str[$len-1];
            $len--;
        }
        return $new_str;
    }

    /**
     * 循环前后交换字符(在原有字符串上进行修改)
     * 
     * @param  string $str
     * @return string 
     */
    public function strRev3($str) {
        $len = strlen($str);
        $nums= $len/2; // 这里虽然有小数,实际上也不用转整数
        for($i=0; $i<=$nums; $i++) {
            $tmp            = $str[$i];
            $str[$i]        = $str[$len-$i-1];
            $str[$len-$i-1] = $tmp;
        }
        return $str;
    }

    /**
     * 使用内置函数mb_*     (考虑中文多字节字符问题)
     *      mb_strlen() <https://www.php.net/manual/zh/function.mb-strlen.php>
     *      mb_substr() <https://www.php.net/manual/zh/function.mb-substr.php>
     * 
     * @param  string $str
     * @return string $res
     */
    public function strRev4($str, $encoding = 'utf-8') {
        $len = mb_strlen($str);
        $res = '';
        for($i=$len-1; $i>=0; $i--) {
            $res .= mb_substr($str,$i,1,$encoding);
        }
        return $res;
    }
}

$strObj = new StringReverse();

$str    = 'This is good today!';

var_dump($strObj->strRev1($str));
var_dump($strObj->strRev2($str));
var_dump($strObj->strRev3($str));
var_dump($strObj->strRev4('中文字符串'));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值