简单实现字符串反转


为了维护世界的和平,我决定

先上代码:

$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() : 获取字符串长度
    1. mb_strlen(字符串字符编码 可省略)
    2. 字符编码项如果省略会使用内部字符编码,可通过mb_internal_encoding()获取当前内部字符编码
  • mb_substr() : 获取部分字符串
    1. mb_substr(字符串起始位置长度 可省略字符编码 可省略)

    2. 起始位置
      (1) 当为0或正整数时,字符串依照第一字符为位置0、第二字符为位置1以此类推的规则,以起始位置起返回字符串

      0 1 2 3

      (2) 当为负整数时,字符串依照倒数第一字符为位置-1、倒数第二字符为位置-2以此类推的规则,以起始位置起返回字符串

      -4 -3 -2 -1
    3. 长度
      (1) 当省略时,返回字符串由起始位置起至末尾字符
      (2) 当为0或正整数时,返回字符串由起始位置起规定长度个数的字符
      (3) 当为负整数时,返回字符串由起始位置起至倒数第(规定长度的绝对值)的字符

    4. 字符编码项如果省略会使用内部字符编码


  1. 由于编码原因无法正确地处理中文字符串,具体详见http://developer.51cto.com/art/201105/263103.htm ↩

你可能感兴趣的:(简单实现字符串反转)