题
我写过我认为非常简单的使用php explode()
函数将名称拆分为forename和surname:
// split name into first and last
$split = explode(' ', $fullname, 2);
$first = $split[0];
$last = $split[1];
但是,这会导致错误消息" Undefined offset:1"
。该功能似乎仍然有效,但我想清理导致错误的任何内容。我查看了 php手册,但他们的示例使用的语法与以上。
我想我明白了未定义的偏移是什么,但我不明白为什么我的代码会产生错误!
解决方案
这是因为您的全名不包含空格。您可以使用一个简单的技巧来确保空间总是在哪里
$split = explode(' ', "$fullname ");
(注意引号内的空格)
顺便说一下,您可以使用list()函数来简化代码
list($first, $last) = explode(' ', "$fullname ");
其他提示
这可能是因为 $ fullname
不包含空格字符。
此示例应解决您的问题,而不显示此通知:
$split = explode(' ', $fullname, 2);
$first = @$split[0];
$last = @$split[1];
现在,如果 $ fullname
是" musoNic80"
,您将不会收到通知消息。
请注意使用" @"
字符。
HTH 利亚
BTW,该算法不会一直有效。想想两个单词的拉丁或意大利姓氏名称,如“De Castro”,“Dela Cruz”,“La Rosa”等.Split将返回3而不是2个单词:
Array {
[0] => 'Pedro'
[1] => 'De'
[1] => 'Castro'
}
你最终会得到像“欢迎回来Ana De”这样的消息。或“编辑Monsour La的档案”。
对于像“安妮·玛丽·米勒”,“威廉·霍华德·塔夫脱”等两个单词的名字也会发生同样的事情。
只是一个提示。
据推测,无论 $ fullname
是什么,都不包含空格,所以 $ split
是一个包含单个元素的数组,所以 $ split [1]
指的是未定义的偏移量。
那很奇怪,这里的工作正常。当我尝试使用字符串时,cat walk
并且只是
将会执行并且不会产生错误。我用 print_r
当您收到错误时,您的 $ fullname
是什么样的?
不隶属于 StackOverflow