PHP:将名称部分从名称解析器(theiconic)映射到vCard属性
我面临着将名称数据字符串PHP:将名称部分从名称解析器(theiconic)映射到vCard属性,php,parsing,vcf-vcard,Php,Parsing,Vcf Vcard,我面临着将名称数据字符串$realName转换为(正确的)vCard属性的情况 作为一个解析器,似乎最适合我的目的(这个库目前是维护的,经常被下载,并且已经考虑到了德语的特点) 源字符串$realName可以同时包含:个人或公司的名称。因此,其组件(从我的pov)可以分配给以下vCard属性: FN(新排列的字符串) N(姓;名;附加名;尊称前缀;尊称后缀) 昵称(很清楚) 组织机构 另一方面,名称解析器提供以下组件(或空字符串): 称呼(如先生、夫人、博士等) 名字 中间名 首字母(单个
$realName
转换为(正确的)vCard属性的情况
作为一个解析器,似乎最适合我的目的(这个库目前是维护的,经常被下载,并且已经考虑到了德语的特点)
源字符串$realName
可以同时包含:个人或公司的名称。因此,其组件(从我的pov)可以分配给以下vCard属性:
- FN(新排列的字符串)
- N(姓;名;附加名;尊称前缀;尊称后缀)
- 昵称(很清楚)
- 组织机构
- 称呼(如先生、夫人、博士等)
- 名字
- 中间名
- 首字母(单个字母,可能后跟一个点)
- 昵称(括号、括号内的部分等)
- 姓氏(即支持from、de等前缀)
- 后缀(Jr、高级、三年级、博士等)
/**
* get an array of name parts vCard property as key
*
* @param string $realname
* @return array
*/
function getNameParts(string $realName)
{
$parser = new Parser();
$nameParts = $parser->parse($realName);
$salutation = $nameParts->getSalutation();
$firstName = $nameParts->getFirstname();
$lastName = $nameParts->getLastname();
$middleName = $nameParts->getMiddlename();
$nickName = $nameParts->getNickname();
$initials = $nameParts->getInitials();
$suffix = $nameParts->getSuffix();
if (!empty($firstName)) {
$additionalName = implode(',', [$middleName, $initials]);
$name = implode(';', [$lastName, $firstName, $additionalName, $salutation, $suffix]);
$fullName = implode(' ', [$salutation, $firstName, $additionalName, $lastName]).', '.$suffix;
} else {
$name = '';
$fullName = $realName;
$company = $realName;
}
return [
'N' => $name,
'FN' => $fullName,
'NICKNAME' => $nickName,
'ORG' => $company,
]
}
我不太熟悉美国/英国的名称组件规则、正确的分配和顺序(例如FN)。
我也不知道如何判断$realName
代表的是公司名称还是个人
因此,我想知道是否有其他人也有同样的任务,并且可以看看这是否会朝着正确的方向发展
许多Thx我为自己找到了令人满意的解决方案: 我希望其他人能使用它