//方法一
function strrev_charset(
$string,
$charset='utf-8'
){
if(!
is_string(
$string) || !mb_check_encoding(
$string,
$charset)){
return '翻转失败'
;
}else{
$arr =
[];
$str_len = mb_strlen(
$string,
$charset);
for(
$i=0;
$i<
$str_len;
$i++
){
$char = mb_substr(
$string,
$i,1,
$charset);
array_unshift(
$arr,
$char);
}
return implode(
$arr);
}
}
//方法二
function utf8_strrev(
$str){
//u 此修正符打开一个与perl不兼容的附加功能. 模式字符串被认为是utf-8的. 这个修饰符 从unix版php 4.1.0或更高, win32版php 4.2.3开始可用. php 4.3.5开始检查模式的utf-8合法性.
//s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
preg_match_all('/./us',
$str,
$array);
//把每个字符都放到数组里
return join('',
array_reverse(
$array[0]));
//翻转数组,转化为字符串
}
$str = '世界你好 123 奋斗拼搏 abc'
;
echo strrev_charset(
$str);
//cba 搏拼斗奋 321 好你界世
toBr();
echo utf8_strrev(
$str);
//cba 搏拼斗奋 321 好你界世
toBr();
echo strrev(
$str);
//含中文时乱码,cba ��漋旖拥� 321 ��堽䌕疸�
结论:方法一用到的函数:is_string(string),判断是否是字符串;mb_check_encoding(string,encoding),检查字符串在指定的编码里是否有效;mb_strlen(string,encoding),获取字符串的长度(可以包含中文);mb_substr(string,start,lenth,encoding), 获取部分字符串(可以包含中文);array_unshift(array,new_value,new_value2,...),向数组开头插入新元素;implode(array),返回由数组元素组合成的字符串,这种省略第一个参数,第二个参数放第一个位置的方式不推荐;implode(separator,array),返回由数组元素组合成的字符串,推荐使用这种。
方法二用到的函数:preg_match_all(pattern,string,match_result),执行一个全局正则表达式匹配(注意匹配到的结果数组是二维数组);array_reverse(array,preserve),以相反的元素顺序返回数组(第二个参数是否保留键名);join(),是 implode() 函数的别名。
转载于:https://www.cnblogs.com/gyfluck/p/9224544.html
相关资源:php实现字符串翻转的方法