想知道我是否可以获得一些关于在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"
关于从哪里开始的任何建议?
答案 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.