2017-01-20 12 views
0

Мне было интересно, что лучше всего создать vCard. Мне не нужно хранить его на моем сервере, просто сгенерируйте его, когда пользователь захочет его загрузить. Нижеприведенный код работает, но мне кажется неуклюжим, есть ли лучший способ?Динамически создавать vCard

<?php 
function raf_create_vcard(){ 
$format_name = utf8_encode($name); 
$format_email = utf8_encode($email); 
$format_tel = utf8_encode($tel); 
$format_fax = utf8_encode($fax); 
$format_www = utf8_encode($www); 
$format_address = utf8_encode($address); 

return 'BEGIN%3AVCARD%0D%0AVERSION%3A4.0%0D%0AN%3A%3B'.$format_name.'%3B%3B%3B%0D%0AFN%3A'.$format_name.'%0D%0AEMAIL%3A'.$format_email.'%0D%0AORG%3A'.$format_name.'%0D%0ATEL%3A'.$format_tel.'%0D%0ATEL%3Btype%3DFAX%3A'.$format_fax.'%0D%0AURL%3Btype%3Dpref%3A'.$format_www.'%0D%0AADR%3A%3B'.$format_address.'%3B%3B%3B%3B%3BSpain%0D%0AEND%3AVCARD'; 
} 
?> 

Генерирование ссылка:

<a href="data:text/plain;charset=UTF-8,<?php echo raf_create_vcard(); ?>" download="contact.vcf">Download</a> 

ответ

0

Без библиотеки вы могли бы написать это так:

function raf_create_vcard(){ 
    return utf8_encode('BEGIN:VCARD 
     VERSION:4.0 
     N:;'.$name.';;; 
     FN:'.$name.' 
     EMAIL:'.$email.' 
     ORG:'.$name.' 
     TEL:'.$tel.' 
     TEL;type=FAX:'.$fax.' 
     URL;type=PREF:'.$www.' 
     ADR:;'.$address.';;;;;Spain 
     END:VCARD'); 
} 

Но вы должны использовать библиотеку PHP для этой цели. Проверьте это: https://github.com/jeroendesloovere/vcard.

use JeroenDesloovere\VCard\VCard; 

$vcard = new VCard(); 

$vcard->addName($name); 
$vcard->addCompany($name); 
$vcard->addEmail($email); 
$vcard->addPhoneNumber($tel); 
$vcard->addPhoneNumber($fax, 'FAX'); 
$vcard->addURL($www, 'PREF'); 
$vcard->addAddress($address, null, null, null, null, null, 'Spain'); 

$vcardAsString = $vcard->getOutput();