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不必担心,谢谢你们;帮了大忙。