场景:英文字符串反转 使用 方法 strrev($str) ,但是中文字符串怎么反转呢?
代码
/**
* 多字符 字符串反转
* @param string $string 字符串
* @param string $encoding 编码
* php >= 7.4 否则需要实现 mb_str_split 多字符变成字符串
*/
function mb_strrev($string , $encoding = null){
if(is_null($encoding)){
$encoding = mb_internal_encoding();
}
// 把字符串变成数组
$arr = mb_str_split($string , 1 ,$encoding);
// 数组反转
return implode('',array_reverse($arr));
}
输出
var_dump(mb_strrev('你好 hello w阿斯利康大家坷拉就少得可怜ord!'));
// string(57) "!dro怜可得少就拉坷家大康利斯阿w olleh 好你"
引用: mb_str_split 实现方式
附上代码:
/**
* 分割字符串
*/
if (!function_exists('mb_str_split')) {
function mb_str_split($string, $split_length = 1, $encoding = null)
{
if (is_null($encoding)) {
$encoding = mb_internal_encoding();
}
if ($split_length < 1) {
return [];
}
$length = mb_strlen($string, $encoding);
$parts = [];
for ($i = 0; $i < $length; $i += $split_length) {
$parts[] = mb_substr($string, $i, $split_length, $encoding);
}
return $parts;
}
}