Ну что ж ... идентификация имен может быть довольно сложной, особенно если пользователи склонны к опечаткам.
Хороший подход, который может не сработать в 100% случаев (скажем, по крайней мере, 90% или для всехнесколько примеров, которые вы показали) - это разделить строку на массив и получить первый и последний элемент.
$name_parts = explode(' ', $name);
$first_name = $name_parts[0];
$last_name = $name_parts[sizeof($name_parts)-1];
Я предпочел использовать explode
вместо strtok