chillerlan/php-qrcode 中 ios 名称字段的 QR VCard 错误

问题描述 投票:0回答:1

在 laravel 中,我使用 chillerlan/php-qrcode 创建 QR VCard。 当 android 扫描时,qr all 字段会被填充,而在 ios.iphone 中,名字为空,姓氏包含所有值。

chillerlan 文档参考 https://github.com/chillerlan/php-qrcode/blob/a301af5b7faa7fcd690b29f38b283616a7d93b89/docs/Appendix/URI-Content.md#L195

工作正常

Android

First name: ValueFirstname
Middle name: ValueMiddlename
Last name: ValueLastname

名字为空,姓氏包含所有值

Iphone/IOS

First name:
Last name: ValueFirstname ValueMiddlename ValueLastname

代码

firstname = $vcard_request->input('firstname');
         $middlename = $vcard_request->input('middlename');
         $lastname = $vcard_request->input('lastname');
        
 
 
         $vcard = "BEGIN:VCARD\r\n";
         
 
         if (!empty($middlename) && strtolower($middlename) !== 'n/a') {
            $formattedName = "$firstname $middlename $lastname";
            $vcard .= "N:$formattedName\r\n";
        } else {
            $formattedName = "$firstname $lastname";
            $vcard .= "N:$formattedName\r\n";
        }
         
     
 
         $vcard .= "VERSION:4.0\r\n";
 
      
         $vcard .= "END:VCARD";

composer.json

"chillerlan/php-qrcode": "^4.3",
php laravel qr-code vcf-vcard
1个回答
0
投票

对于 Android,它可能工作得很好,但对于 iOS,它希望这些名称根据

VCard
规范位于其特定位置。试试这个 >>

$firstname = $vcard_request->input('firstname'); $middlename = $vcard_request->input('middlename'); $lastname = $vcard_request->input('lastname');

$vcard = "BEGIN:VCARD\r\n";

$formattedName = $lastname . ';' . $firstname . ';' . $middlename . ';;';
$vcard .= "N:" . $formattedName . "\r\n";

$vcard .= "VERSION:4.0\r\n";
$vcard .= "END:VCARD";
© www.soinside.com 2019 - 2024. All rights reserved.