-2

我有一个名为“名称”的表单字段 - 但我想使用 preg 表达式将提交作为名字和姓氏保存到数据库中。

有人可以说明如果我在字段中输入名称“约翰史密斯”,正则表达式将如何将其剥离为名字 - 约翰姓氏 - 史密斯

提前致谢

4

5 回答 5

2
$names = explode(" ", $POST['name']);
$firstName = $name[0];
$lastName = $name[1];

然而,这是一个绝对残酷的想法。只需创建一个名字和姓氏表单字段。我保证在某些时候,有人会使用 Alfred E Newman 之类的东西,而你最终会以他们的首字母或中间名作为姓氏。

于 2012-10-08T12:31:56.197 回答
2

对于简单的情况,您可能只想用空格分割名称:

$name = "John Smith";
$nameParts = explode(' ',$name);
var_dump($nameParts);

更复杂的情况(例如标题/中间名)可能会迫使您使用多个输入字段。

于 2012-10-08T12:30:20.150 回答
0

使用explode

<?php
$fullname='John Smith';

list ($firstName,$lastName)=explode(' ',$fullname);

echo 'First name: '.$firstName.PHP_EOL;
echo 'Last name: '.$lastName.PHP_EOL;
于 2012-10-08T12:33:41.523 回答
0

刚刚创建了这个功能,以防其他人有类似的问题 - 感谢所有的建议家伙!

http://ideone.com/gxvi9

于 2012-10-08T13:00:19.850 回答
0

首选使用split(版本 php < 5.3.0)或者explodesplit函数的别名,在你的情况下,你只需要用空格字符分割你的全名' '

var $fullname = "John Smith";
var $splitfullname = $fullname.split(' ');

var $firstname = $splitfullname[0];
var $lastname = $splitfullname[1];

-

var $fullname = "John Smith";
var $splitfullname = explode(' ', $fullname);

var $firstname = $splitfullname[0];
var $lastname = $splitfullname[1];

如果您构建捕获名字和全名的表单,我建议您将全名输入字段拆分为两个输入字段(名字和姓氏)。

于 2012-10-08T12:29:12.677 回答