我想将字符串的最后一个单词放在新字符串的开头。
如果字符串包含不超过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,依此类推。
答案 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);
答案 1 :(得分:1)
使用explode
和array_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打印从开始到最后一个空格。
EDIT;忘了第一个字母的+1。我之前的代码打印为space first.....