php字符串标记化

php字符串标记化,php,string,token,Php,String,Token,不知道我是否可以得到一些关于用php标记字符串的建议,因为我对这种语言相对较新 我有这个: $full_name = "John Smith" 我想使用一个字符串函数,将名字和姓氏提取到数组的索引中 $arr[0] = "John" $arr[1] = "Smith" 但是,该功能还应能够处理以下情况: $full_name = "John Roberts-Smith II" $arr[0] = "John" $arr[1] = "Roberts-Smith II" 或 关于从何处开始有什

不知道我是否可以得到一些关于用php标记字符串的建议,因为我对这种语言相对较新

我有这个:

$full_name = "John Smith"
我想使用一个字符串函数,将名字和姓氏提取到数组的索引中

$arr[0] = "John"
$arr[1] = "Smith"
但是,该功能还应能够处理以下情况:

$full_name = "John Roberts-Smith II"
$arr[0] = "John"
$arr[1] = "Roberts-Smith II"

关于从何处开始有什么建议吗?

为此,您应该使用
explode()
函数

$name_splitted = explode(" ", "John Smith", 2);
echo $name_splitted[0]; // John
echo $name_splitted[1]; // Smith
从—

数组分解(字符串$delimiter,字符串$string[,int$limit])

返回字符串数组,每个字符串都是“string”的子字符串,通过在字符串“delimiter”形成的边界上拆分它而形成。如果设置了“limit”且为正,则返回的数组将包含最多个“limit”元素,最后一个元素包含字符串的其余部分。如果“limit”参数为负值,则返回除最后一个“limit”之外的所有组件。如果“limit”参数为零,则将其视为1。使用
explode()
和可选的limit参数:

$full_name = "John Roberts-Smith II"

// Explode at most 2 elements
$arr = explode(' ', $full_name, 2);

// Your values:
$arr[0] = "John"
$arr[1] = "Roberts-Smith II"
不过,上一个案例很特殊,将第一个名称放在第二个数组元素中。这需要特殊处理:

// If the name contains no whitespace,
// put the whole thing in the second array element.
if (!strpos($full_name, ' ')) {
   $arr[0] = '';
   $arr[1] = $full_name;
}
因此,一个完整的函数:

function split_name($name) {
  if (!strpos($name, ' ')) {
    $arr = array();
    $arr[0] = '';
    $arr[1] = $name;
  }
  else $arr = explode(' ', $name, 2);

  return $arr;
}

首先,你必须考虑什么是名字和姓氏。谢谢迈克尔。我将尝试这个例子。感谢你help@user657514请务必将
$full\u name
更改为
$name
——我刚刚纠正了上面的打字错误。
function split_name($name) {
  if (!strpos($name, ' ')) {
    $arr = array();
    $arr[0] = '';
    $arr[1] = $name;
  }
  else $arr = explode(' ', $name, 2);

  return $arr;
}