从PHP中的字符串返回每个其他字符

时间:2014-03-03 09:37:29

标签: php

假设我有一个字符串变量:

$str = "abcdefghijklmn";

PHP 中编写函数以从字符串的 end 开始并返回其他所有字符的最佳方法是什么?示例的输出应为:

nljhfdb

这是我到目前为止所做的:

    $str = "abcdefghijklmn";
    $pieces = str_split(strrev($str), 1);

    $return = null;
    for($i = 0; $i < sizeof($pieces); $i++) {
            if($i % 2 === 0) {
                    $return .= $pieces[$i];
            }
    }

    echo $return;

7 个答案:

答案 0 :(得分:7)

试试:

$input  = 'abcdefghijklmn';
$output = '';

for ($i = strlen($input) - 1; $i >= 0; $i -= 2) {
  $output .= $input[$i];
}

输出:

string 'nljhfdb' (length=7)

答案 1 :(得分:1)

您需要使用str_split拆分字符串以将其存储在数组中。现在循环遍历数组并比较键以执行modulo操作。

<?php
$str = "abcdefghijklmn";
$nstr="";
foreach(str_split(strrev($str)) as $k=>$v)
{
    if($k%2==0){
        $nstr.= $v;
    }
}
echo $nstr; //"prints" nljhfdb

答案 2 :(得分:1)

我会像Shankar一样,尽管这是循环的另一种方法。

<?php
    $str = "abcdefghijklmn";
    for($i=0;$i<strlen($str);$i++){
        $res .= (($i-1) % 2 == 0 ? $str[$i] : "");
    }
    print(strrev($res)); // Result: nljhfdb
?>

答案 3 :(得分:1)

反转字符串然后执行类似

的操作
foreach($array as $key => $value)
{
  if($key%2 != 0) //The key is uneven, skip
    continue;
 //do your stuff
}

答案 4 :(得分:0)

preg_replace('/(.)./', '$1', strrev($str));

其中preg_replace用两个中的第一个替换反向字符串的每两个字符。

答案 5 :(得分:0)

循环前进,后退追加

<?php

    $res = '';
    $str = "abcdefghijklmn";

    for ($i = 0; $i < strlen($str); $i++)  {
        if(($i - 1) % 2 == 0)
              $res = $str[$i] . $res;
    }

    echo $res;

?>

答案 6 :(得分:-1)

这样的事情怎么样:

$str = str_split("abcdefghijklmn");

echo join("",
    array_reverse(
        array_filter($str, function($var) {
                global $str;
                return(array_search($var,$str) & 1);
            }
        )
    )
);