sabsab43/vcard-fusion

此库可以合并多个 vcard/vcf 文件,并提供出现搜索选项。

10.1 2021-04-19 10:15 UTC

This package is auto-updated.

Last update: 2024-09-19 18:13:17 UTC


README

此脚本可以将多个 vcard/vcf 文件转换为单个文件。

您可以选择是否要搜索出现。

在使用脚本之前请阅读

在开始转换之前,就像使用任何其他软件一样,请备份您的 vcard 文件,尤其是如果您使用出现搜索选项。

出现搜索选项将比较 FN(或根据 vcard 版本为 N)属性,如果您有两个具有相同 FN 或 N 属性的不同联系人,它们将被合并。

例如,这两个具有相同姓名(FN 属性)的不同 vcard

BEGIN:VCARD
VERSION:3.0
PRODID:-//dmfs.org//mimedir.vcard//EN
UID:811bd877-a93f-4e76-8098-b61ece5c8650
EMAIL;TYPE=*:john.doe@mail.com
FN:John
REV:20210330T101608Z
TEL;TYPE=VOICE,CELL:+33 1 23 45 67 89
END:VCARD

BEGIN:VCARD
VERSION:3.0
PRODID:-//dmfs.org//mimedir.vcard//EN
UID:811bd877-a93f-4e76-8098-b61ece5c8650
EMAIL;TYPE=*:john.peter@mail.fr
FN:John
REV:20210330T101608Z
TEL;TYPE=VOICE,CELL:+33 9 87 65 43 21
END:VCARD

它们将变为

BEGIN:VCARD
VERSION:3.0
PRODID:-//dmfs.org//mimedir.vcard//EN
UID:811bd877-a93f-4e76-8098-b61ece5c8650
EMAIL;TYPE=*:john.doe@mail.com
FN:John
REV:20210330T101608Z
TEL;TYPE=VOICE,CELL:+33 1 23 45 67 89
EMAIL;TYPE=*:john.peter@mail.fr
TEL;TYPE=VOICE,CELL:+33 9 87 65 43 21
END:VCARD

因此,请确保您的联系人具有不同的姓名,如果您不希望得到这样的结果或不允许检查出现选项。

安装

使用 composer 获取此包

composer require sabsab43/vcard-fusion

它可在 Packagist 上找到:[https://packagist.org.cn/packages/sabsab43/vcard-fusion](https://packagist.org.cn/packages/sabsab43/vcard-fusion)

配置

您只需将此代码放入您的控制器中

/** Your autoloader... **/
require('./vendor/autoload.php');

use VcardFusion\VcardManager;

/** Your code .... **/

$errors = [];
if (isset($_FILES) && !empty($_FILES))
{   
    $vcm = new VcardManager($_FILES);
    $errors = $vcm->mergeVcardFiles();  
}

/** Your code...**/

VcardManager 类构造函数等待此 POST 请求值

$_POST['version'] //'2.1', '3.0' or '4.0', if not specify return an error
$_POST['checkOccurrences'] // true or false, if not specify set $checkOccurrences to false
$_POST['checkVersion'] //true or false, if not specify set $checkVersion to false

搜索出现和检查 vcard 版本由用户设置。您需要在您的表单中指定此选项,如下例所示

   <form class="form" action="./Your_Controller.php" enctype="multipart/form-data" method="POST">
    
        <fieldset>
            <legend>Vcard version</legend>
            <div>
                <input type="radio" id="vcard2" name="version" value="2.1">
                <label for="vcard2">Vcard 2.1</label>
    
                <input type="radio" id="vcard3" name="version" value="3.0" checked>
                <label for="vcard3">Vcard 3.0</label>
    
                <input type="radio" id="vcard4" name="version" value="4.0">
                <label for="vcard4">Vcard 4.0</label>
            </div>
        </fieldset>

        <fieldset>
            <legend>Options</legend>
            <div>
                <div>
                    <input type="checkbox" name="checkOccurrences" id="checkOccurrences">
                    <label for="checkOccurrences">Check occurrences</label>
                </div>
    
                <div>
                    <input type="checkbox" name="checkVersion" id="checkVersion" checked>
                    <label for="checkVersion">Check files version(<strong>recommended</strong>)</label>
                </div>
            </div>
        </fieldset>

        <fieldset>
            <legend>Select your files</legend>
                <?php if(isset($errors) && !empty($errors)):?>
                    <div>
                        <?php foreach ($errors as $error):
                            echo "<p style='color: red;'>$error</p>";
                        endforeach ?>
                    </div>
                   <?php endif ?>
                <div>
                    <input type="file" accept=".vcf, .vcard" name='files[]' multiple="multiple">
                </div>
        </fieldset>

        <div>
            <button class="btn-custom" type="submit">Merge</button>
        </div>
    </form>

脚本将返回一个新的 vcard 文件或打印错误(如果失败)。