Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在“中查找姓氏的正则表达式”;姓氏姓氏,证书“;格式_Php_Regex - Fatal编程技术网

Php 在“中查找姓氏的正则表达式”;姓氏姓氏,证书“;格式

Php 在“中查找姓氏的正则表达式”;姓氏姓氏,证书“;格式,php,regex,Php,Regex,我正在尝试从带有尾随凭据的全名中查找姓氏。有些名称具有中间名或首字母缩写、连字符名称、多个凭据,有些名称没有尾随凭据: 约翰·多伊,医学博士 简·X·多伊,FNP-C Joe Cool,医学博士 比莉·乔最后 我从 /\w+(?=[\s,]+\S*$)/gmi 它获取前两种格式的姓氏,但分别获取第二种格式的第一个凭据和第一个名称 感谢您的帮助。如果您的所有输入都如您所描述的那样结构良好,那么最好的建议就是按照@Magnus Eriksson在他的推荐中所说的去做。代码非常简单: $part

我正在尝试从带有尾随凭据的全名中查找姓氏。有些名称具有中间名或首字母缩写、连字符名称、多个凭据,有些名称没有尾随凭据:

  • 约翰·多伊,医学博士
  • 简·X·多伊,FNP-C
  • Joe Cool,医学博士
  • 比莉·乔最后
我从

/\w+(?=[\s,]+\S*$)/gmi
它获取前两种格式的姓氏,但分别获取第二种格式的第一个凭据和第一个名称


感谢您的帮助。

如果您的所有输入都如您所描述的那样结构良好,那么最好的建议就是按照@Magnus Eriksson在他的推荐中所说的去做。代码非常简单:

$parts = explode(',', $inputString);
$names = explode(' ', trim($parts[0]));
$lastName = $names[count($names) - 1];

如果您的所有输入都如您所描述的那样结构良好,那么最好的建议是按照@Magnus Eriksson在其推荐中所说的去做。代码非常简单:

$parts = explode(',', $inputString);
$names = explode(' ', trim($parts[0]));
$lastName = $names[count($names) - 1];

如果您100%确信它们都符合您发布的格式,您可以按行(每人)执行此操作:

上面的代码可以优化,但我想让它尽可能地自解释


注意:这只适用于遵循您提到的格式的名称。如果您要获得三个以上的姓名,您会遇到问题,因为您无法确定这是一个双重的名字、中间名还是姓氏。

如果您100%确信他们都遵循您发布的格式,您可以每行(每人)执行此操作:

上面的代码可以优化,但我想让它尽可能地自解释



注意:这只适用于遵循您提到的格式的名称。如果您要获得三个以上的姓名,您会遇到问题,因为您无法确定它是双名、中名还是姓。

不要这样做-尝试处理姓名肯定会导致疯狂(或损坏的姓名信息-其中一个):您不能。想象一下这样的名字:“史蒂夫·艾伦·史密斯”、“史蒂夫·史密斯·埃里克森”和“史蒂夫·艾伦·史密斯·埃里克森”。您如何确定哪个名称是第一个、中间个和最后一个?所有双重名称都没有连字符。当你意识到所有人都没有英文名字时(因此格式可能完全不同),它甚至会变得更复杂。谢谢你-在这种情况下,我不是从用户那里随机输入的,这是我雇主的医疗提供者列表。我知道所有的名字都是英文的,并且遵循一个通用的格式,还有一些离群值。如果你100%确信它们都遵循你发布的格式,只需在
上分解字符串即可。响应中的第一个元素是名称,可以在空间中分解。然后你把所有的名字分开。如果它包含两个名称,那么就有第一个和最后一个。如果你有三条建议,那么第一条、第二条和最后一条。@MagnusEriksson这是最好的建议——你应该把它作为答案写下来。我为你的评论写了一个社区维基答案(这不是我的代表能得到的)。请随意写下你自己的答案——我会删除我的答案。只是不要——试图处理名字肯定会让人发疯(或者名字信息被破坏——两者之一):你不能。想象一下这样的名字:“史蒂夫·艾伦·史密斯”、“史蒂夫·史密斯·埃里克森”和“史蒂夫·艾伦·史密斯·埃里克森”。您如何确定哪个名称是第一个、中间个和最后一个?所有双重名称都没有连字符。当你意识到所有人都没有英文名字时(因此格式可能完全不同),它甚至会变得更复杂。谢谢你-在这种情况下,我不是从用户那里随机输入的,这是我雇主的医疗提供者列表。我知道所有的名字都是英文的,并且遵循一个通用的格式,还有一些离群值。如果你100%确信它们都遵循你发布的格式,只需在
上分解字符串即可。响应中的第一个元素是名称,可以在空间中分解。然后你把所有的名字分开。如果它包含两个名称,那么就有第一个和最后一个。如果你有三条建议,那么第一条、第二条和最后一条。@MagnusEriksson这是最好的建议——你应该把它作为答案写下来。我为你的评论写了一个社区维基答案(这不是我的代表能得到的)。请随意写下你自己的答案-我会删除我的。好吧。。。我想得太多了。谢谢大家。@Pixlight别担心。你真的应该接受MagnusEricsson的答案,而不是现在的这个。@MagnusEricsson不必担心,谢谢你们;帮了大忙。嗯。。。我想得太多了。谢谢大家。@Pixlight别担心。你真的应该接受MagnusEricsson的答案,而不是现在的这个。@MagnusEricsson不必担心,谢谢你们;帮了大忙。