从潜在的分割器中分割字符串是一个相对常见的要求:
$name = 'John'; // or can be 'John Smith'
我用
list($firstName, $lastName) = explode(' ', $name) + [1 => null];
或
@list($firstName, $lastName) = explode(' ', $name);
我想知道你们是否使用更简洁或更易读的方法?
答案 0 :(得分:1)
哦,我找到了它!
list($firstName, $lastName) = explode(' ', $name.' ');
简单的技巧是将胶水串附加到主字符串的末尾。 Tadda!
这使得访问字符串的第二部分非常简单:
$domain = explode('@', $filter->email . '@')[1]; // for an invalid input the domain will be ''.
答案 1 :(得分:0)
使用array_pop
获取first_name中的last_name和all。您的代码不适用于具有三个单词的名称。以下示例也适用于名称为Niklesh Kumar Raut
取消注释一个$name
并注释两个以检查
//$name = "Niklesh";
//$name = "Niklesh Raut";
$name = "Niklesh Kumar Raut";
$name_arr = explode(" ",$name);
$last_name = array_pop($name_arr);
$first_name = implode(" ",$name_arr);
echo "First Name : $first_name\n";//Niklesh Kumar
echo "Last Name : $last_name";//Raut
答案 2 :(得分:-1)
你可以使用正则表达式检查字符串是否包含空格,然后使用空格爆炸来获取第一个和最后一个字符串。
$name = 'john smith';
$first_name = $name;
$last_name = '';
if(preg_match('/\s/',$name)) {
list($first_name, $last_name) = explode(' ', $name);
}
echo "Hello ".$first_name." ".$last_name;