Используйте 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;
}