我从一些数据不存在的网站获取信息,问题是它将大部分数据反向返回。
所以,我有作者姓名:
说我得到了: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:)
答案 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;
?>
希望这有帮助!