PHP - проблемы разбора и объединения строк - PullRequest
0 голосов
/ 18 января 2012

Вот проблема: я хочу разбить строку, чтобы иметь имя и имя, но две мои переменные пусты, и я не понимаю почему ... Кто-то может мне помочь?Это мой код:

 $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 ]

3 голосов
/ 18 января 2012

Хотите разделить имя на имя и фамилию на основе пробела? Почему бы просто не сделать это:

$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 голос
/ 18 января 2012

Прежде всего, дважды проверьте все имена переменных.

Вы говорите:

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

Вы нигде не используете $ prenom_aut2 в своем коде, а затем выдаете:

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

Отвечая на ваш конкретный вопрос, вы объявляете, заполняете и отображаете различные переменные.

1 голос
/ 18 января 2012

Если буква не равна '', она продолжает цикл и не выполняет цикл 2 для.

Но вы ищете функцию explode в PHP:

<?php
  $names = explode(' ', $name);
  $prenom = $names[0];
  $nom = $names[1];
?>
0 голосов
/ 18 января 2012

Еще один способ взорваться и манипулировать этим способом!.

list($first_name, $last_name) = explode(" ", $name);
echo $first_name; 
echo $last_name; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...