Php 基于空格将名称拆分为两部分的简单preg表达式

Php 基于空格将名称拆分为两部分的简单preg表达式,php,regex,Php,Regex,我有一个名为“Name”的表单字段,但我想使用preg表达式将提交内容作为名字和姓氏保存到DB中 能否举例说明,如果我在字段中输入名称“John Smith”,regexp将如何将其拆分为名字-John姓氏-Smith 提前感谢更喜欢使用split(php

我有一个名为“Name”的表单字段,但我想使用preg表达式将提交内容作为名字和姓氏保存到DB中

能否举例说明,如果我在字段中输入名称“John Smith”,regexp将如何将其拆分为名字-John姓氏-Smith


提前感谢

更喜欢使用
split
(php<5.3.0版)或
explode
这是
split
函数的别名,在您的情况下,您只需使用空格字符
'

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

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


如果您构建的表单包含firstname和fullname,我建议您将fullname输入字段拆分为两个输入字段(firstname和lastname)。

对于简单的情况,您可能只需要将名称拆分为空格:

$name = "John Smith";
$nameParts = explode(' ',$name);
var_dump($nameParts);
更复杂的情况(例如标题/中间名)可能会迫使您使用多个输入字段

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

然而,这是一个绝对残酷的想法。只需在表单字段中输入名字和姓氏。我保证在某个时候,有人会把阿尔弗雷德·纽曼(Alfred E Newman)这样的名字放在你的名字里,而你最终会把他们的名字的首字母或中间字母作为姓氏。

使用
分解

<?php
$fullname='John Smith';

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

echo 'First name: '.$firstName.PHP_EOL;
echo 'Last name: '.$lastName.PHP_EOL;

刚刚创建了这个函数,以防其他人有类似的问题-谢谢大家的建议


那不行。它看起来更像VB或Java,而不是PHP。首先,PHP中没有
split
函数。接下来,
explode
接受2个参数-拆分字符,然后是要拆分的项目。
将两个字符串连接在一起,而不是调用该类的函数(在本例中为字符串)etc@DaveyBoy
Split
函数存在。。。自v5.3.0以来,split已过时。尽管如此,我对它的功能的评论仍然有效——两个参数,不正确地使用了连接等cgood point——感谢您的想法,我们将使用类似的东西。。。有一些额外的逻辑,让人们输入额外的单词/名称等<代码>$keywords=preg_split(“/[\s,]+/”,“Bob E Smith”)为什么使事情复杂化?如果需要两个数据库条目,只需使用两个字段。这不会让你的用户更容易,我几乎可以保证它会在某个时候失败,给你提供不好的数据。你是100%正确的,这是一个旧系统,所以客户不想添加额外的字段:(但你是对的1000倍!!:-)再次干杯,客户不想这样做。Zabs充满了爱和美感,但这不是客户的愿望,而是编程问题。示例:如何将一个名字拆分为名字和姓氏的一般问题,以前在网站上肯定已经详细讨论过了。更具体地搜索,您将发现更多有价值的资源。也请看,我们通常不要求我们想知道的。不适用于Q&A;)一定要记住那些名字“复杂”的人。表单中的多个字段可能是解决OP情况的最佳方案,但我也更喜欢分解而不是拆分字符串。
<?php
$fullname='John Smith';

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

echo 'First name: '.$firstName.PHP_EOL;
echo 'Last name: '.$lastName.PHP_EOL;