问题出在这里:我想拆分一个字符串以获得名称和名字,但我的两个变量是空的,我不明白为什么......有人能帮助我吗?这是我的代码:
$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.'"';
谢谢:)
答案 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;