为了维护世界的和平,我决定
先上代码:
$Str='咸鱼字符串等着翻身,hello?';
$NumStr=mb_strlen($Str);
for($i=1;$i<=$NumStr;$i++)
echo mb_substr($Str,-$i,1);
输出结果:
?olleh,身翻着等串符字鱼咸
代码分析:
要想实现字符串的反转,首先我们需要一个能从指定位置读取字符串的函数,然后从最后一个字符开始逐次逐个向前读取并输出。
考虑到字符串包含中文就没有使用strlen()
、substr()
这两个函数[1],而是用到了另外两个有趣的函数mb_strlen()、mb_substr()。这两个函数都属于mbstring扩展中的一员,能用来处理中文字符串。
-
mb_strlen() : 获取字符串长度
- mb_strlen(字符串,字符编码
可省略
) - 字符编码项如果省略会使用内部字符编码,可通过mb_internal_encoding()获取当前内部字符编码
- mb_strlen(字符串,字符编码
-
mb_substr() : 获取部分字符串
-
mb_substr(字符串,起始位置,长度
可省略
,字符编码可省略
) -
起始位置
(1) 当为0或正整数时,字符串依照第一字符为位置0、第二字符为位置1以此类推的规则,以起始位置起返回字符串二 十 四 岁 0 1 2 3 (2) 当为负整数时,字符串依照倒数第一字符为位置-1、倒数第二字符为位置-2以此类推的规则,以起始位置起返回字符串
空 格 氛 围 -4 -3 -2 -1 -
长度
(1) 当省略时,返回字符串由起始位置起至末尾字符
(2) 当为0或正整数时,返回字符串由起始位置起规定长度个数的字符
(3) 当为负整数时,返回字符串由起始位置起至倒数第(规定长度的绝对值)的字符 -
字符编码项如果省略会使用内部字符编码
-
-
由于编码原因无法正确地处理中文字符串,具体详见http://developer.51cto.com/art/201105/263103.htm ↩
网友评论