PHP - 字符串解析&连接问题

时间:2012-01-18 10:37:44

标签: php parsing

问题出在这里:我想拆分一个字符串以获得名称和名字,但我的两个变量是空的,我不明白为什么......有人能帮助我吗?这是我的代码:

 $nom_aut1 = "";
 $prenom_aut2 = "";
 //$auteur1 is already initialized

  for ($i = 0; $i < strlen($auteur1); ++$i)
  {
    if ($auteur1[$i] != ' ') continue;

    for ($j = 0; $j < $i; ++$j)
    {
      $nom_aut1 .= $auteur[$j];
    }

    for ($j = $i+1; $j < strlen($auteur1); ++$j)
    {
      $nom_aut1 .= $auteur1[$j];
    }

    break;
  }
  echo '"'.$nom_aut1.'.'.$prenom_aut1.'"';

谢谢:)

4 个答案:

答案 0 :(得分:3)

您想根据空格将名称拆分为姓氏吗?为什么不这样做:

$names = explode(" ",$name);

如果$name = "Hello World"

$names将是一个数组

$names[0] = "Hello"
$names[1] = "World" 

这样,如果有一个中间名,你也可以得到它。

你可以这样做:

$names = explode(" ",$name);

if (count($names) == 1) //only first name
{
    $first = $names[0];
    $last = "";
}
else if (count($names) == 2) //only first and last name
{
    $first = $names[0];
    $last = $names[1];
}
else    //one or more middle names were provided
{
    $first = $names[0];
    $last = $names[count($names)-1];

    for($i=1;$i<count($names)-1;$i++)
        $middle .= $names[$i] . ' ';
    $middle = trim($middle);  
}

所以,如果$name = "Hello Foo Bar World"

$first = "Hello"
$last = "World"
$middle = "Foo Bar"

答案 1 :(得分:1)

如果字母不等于'',则继续循环并且不执行2 for循环。

但您正在寻找PHP中的explode函数:

<?php
  $names = explode(' ', $name);
  $prenom = $names[0];
  $nom = $names[1];
?>

答案 2 :(得分:1)

首先,仔细检查所有变量名称。

你在说:

$nom_aut1 = "";
$prenom_aut2 = "";

你没有在你的代码中的任何地方使用$ prenom_aut2然后你回应:

echo '"'.$nom_aut1.'.'.$prenom_aut1.'"';

在回答您的具体问题时,您正在声明,填充和回显不同的变量。

答案 3 :(得分:0)

爆炸和操纵这种方式的另一种方法!。

list($first_name, $last_name) = explode(" ", $name);
echo $first_name; 
echo $last_name; 
相关问题