拆分潜在拆分器

时间:2017-10-02 08:37:16

标签: php

从潜在的分割器中分割字符串是一个相对常见的要求:

$name = 'John'; // or can be 'John Smith'

我用

list($firstName, $lastName) = explode(' ', $name) + [1 => null];

@list($firstName, $lastName) = explode(' ', $name);

我想知道你们是否使用更简洁或更易读的方法?

3 个答案:

答案 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

现场演示:https://eval.in/871971

答案 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;