php字符串标记化

时间:2011-07-29 13:49:57

标签: 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"

$full_name = "John"
$arr[0] = ""
$arr[1] = "John"

关于从哪里开始的任何建议?

2 个答案:

答案 0 :(得分:3)

explode()与可选的限制参数一起使用:

$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;
}

答案 1 :(得分:0)

您应explode()为此目的发挥作用。

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

来自documentation -

数组爆炸(字符串$ delimiter,string $ string [,int $ limit])

返回一个字符串数组,每个字符串都是“string”的子字符串,通过在字符串“delimiter”形成的边界上将其拆分而形成。如果设置了“limit”且为正数,则返回的数组将包含最多“limit”元素,最后一个元素包含其余字符串。如果“limit”参数为负数,则返回除最后一个 - “限制”之外的所有组件。如果“limit”参数为零,则将其视为1.