Here are some code snippets to use the gorgeous X2V microformats XSLT files from Brian Suda with PHP 5 and libxslt (PHP 5 includes the XSL extension by default).

hCard to vCard:

To parse a XML or XHTML document, it has to be valid. To tidy the XML file, you can use a service from the W3C:

$xml_string_tidy = file_get_contents("".urlencode($uri));

Then you have to create the HTML DOM…

@$document = new DOMDocument();

and the XSLT DOM…

$stylesheet = new DOMDocument();

Create a new XSLT Processor, load the Stylesheet…

$processor = new XsltProcessor();

and run the transformation.

$result = $processor->transformToDoc($document);
$str = $result->saveXML();

Now $str contains the transformed code.
To send the vCard header with PHP, try

header("Content-Disposition: attachment; filename=contact.vcf");
header("Content-Type: text/x-vcard; charset=UTF-8 name=contact.vcf");
echo $str;

If you want to use the vCard extension .vcf instead of .php you have to add something like that to your .htaccess file

RewriteEngine On
RewriteBase /
RewriteRule ^contact.vcf /hcard2vcard.php [L,QSA]

I hope it works 🙂

4 thoughts on “X2V with PHP 5

  1. Thank you for this post. It has been so helpful to me:) Through following your code, I have made X2V work on static pages on my own server.

    Q. By referring your own copy of Brian Suda’s X2V to a URI on your own server, will it look for an actual file with that name or will it ask the server to retrieve the document?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.