获取PHP中最后一个单词之前的所有单词

时间:2017-07-14 08:28:38

标签: php

我想将字符串的最后一个单词放在新字符串的开头。

如果字符串包含不超过2个字,我只有一个解决方案。如果字符串包含可能包含2个或更多单词,如何更改我的代码以获得所需的结果。它应该像现在一样工作2个单词,超过2个单词。

$string = 'second first';

function space_check($string){
    if (preg_match('/\s/',$string)) 
            return true;    
    }
    if (space_check($string) == true )  {
        $arr = explode(' ',trim($string));
        $new_string = mb_substr($string,  mb_strlen($arr[0])+1);            
        $new_string.=  ' ' . $arr[0];
    }

    echo $new_string; // result: first second

    $string2 = 'second third first';
    echo $new_string; // desired result: first second third (now 'third first second')

我还需要+1 mb_strlen($arr[0])+1部分的解决方案,因为我想如果字符串包含例如三个单词,则必须是+2,依此类推。

3 个答案:

答案 0 :(得分:1)

// initial string
$string2 = 'second third first';

// separate words on space
$arr = explode(' ', $string2);

// get last word and remove it from the array
$last = array_pop($arr);

// now push it in front
array_unshift($arr, $last);

// and build the new string
$new_string = implode(' ', $arr);

以下是working examplerelevant docs

答案 1 :(得分:1)

使用explodearray_pop可以非常简单。

$string = 'This is your string';
$words = explode(' ', $string);

$last_word = array_pop($words);

使用array_pop后,$words将包含除最后一个字之外的所有字词。现在你有了字符串,你可以很容易地在所需的字符串之前连接$last_word

答案 2 :(得分:1)

比爆炸更简单的方法是找到最后一个空格的位置并将其子串。

$str = 'second third first';
$firstword = substr($str, strrpos($str, " ")+1);
$rest = substr($str, 0, strrpos($str, " "));
echo $firstword . " " . $rest;

第一个substr打印从最后一个空格直到结束,下一个substr打印从开始到最后一个空格。

https://3v4l.org/2BUTc

EDIT;忘了第一个字母的+1。我之前的代码打印为space first.....