如何在第二个单词后面移动第一个单词

时间:2014-06-10 08:15:34

标签: php

我从一些数据不存在的网站获取信息,问题是它将大部分数据反向返回。
所以,我有作者姓名:
说我得到了:Shoemaker, Michael Myers

但实际上我想:Michael Myers Shoemaker

另一个例子:
说我得到了:Brainerd, Eleanor Hoyt

但实际上我想:Michael Myers Shoemaker

另一个例子:
说我得到了:Gravengaard, N. P.

但实际上我想要:N. P. Gravengaard

注意:2个单词不需要作者姓名,也可能有3个4个单词,所以我们只能依靠前两个关键词。

我正在使用的代码:

$authname = explode(", ",$name);
$total = count($authname);
for ($i = 0; $i < $total; ++$i) {
$result .= "  ".$authname[$i];

我得到了:Gravengaard N. P.

谢谢。

hsz代码最适合我。谢谢你hsz:)

5 个答案:

答案 0 :(得分:6)

试试:

$input  = 'Shoemaker, Michael Myers';
$output = implode(' ', array_reverse(explode(', ', $input)));

var_dump($output);

输出:

string 'Michael Myers Shoemaker' (length=23)

答案 1 :(得分:1)

如果只有一个逗号(,)..你可以这样做。

$name = "Poe, Edward Allan";
$authname = explode(", ",$name);
$name = $authname[1] . ' ' . $authname[0];
echo $name;

结果将是:

Edward Allan Poe 

答案 2 :(得分:0)

将此添加到您的代码中:

$authname = array_reverse(explode(", ",$name));

所以你的代码将是

$authname = array_reverse(explode(", ",$name));
$total = count($authname);
for ($i = 0; $i < $total; ++$i) {
$result .= "  ".$authname[$i];

使用array_reverse,您基本上可以颠倒元素的顺序。当你爆炸&#34;爆炸&#34;返回字符串您将获得具有相同顺序但分为array元素的字符串。

如果您想了解array_reverse的更多信息,请参阅此manual

注意

当然,您的数据每次都必须采用相同的格式,否则您的结果可能与您的期望不同 此解决方案是根据您的示例量身定制的,hsz一个更好:)

答案 3 :(得分:0)

也许你可以做以下事情......

$authname = explode(", ",$name);
$total = count($authname);

// Place the first element at the back
$authname[] = array_shift($authname);
$result = implode(' ', $authname);

答案 4 :(得分:0)

试试这个:

<?php
  $myvalue = 'Brainerd,Eleanor Hoyt ';
   $str="";
   $arr = explode(',',trim($myvalue));
   for($i=sizeof($arr);$i>=0;$i--){
   $str=$str.$arr[$i]." ";
   }
   echo $str;
 ?>

希望这有帮助!