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('中文字符串'));