sabsab43 / vcard-fusion
此库可以合并多个 vcard/vcf 文件,并提供出现搜索选项。
10.1
2021-04-19 10:15 UTC
Requires
- php: >=7.4.3
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 文件或打印错误(如果失败)。