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("http://cgi.w3.org/cgi-bin/tidy?docAddr=".urlencode($uri));
Then you have to create the HTML DOM…
@$document = new DOMDocument();
@$document->loadHTML($xml_string_tidy);
and the XSLT DOM…
$stylesheet = new DOMDocument();
$stylesheet->load('hcard2vcard.xsl');
Create a new XSLT Processor, load the Stylesheet…
$processor = new XsltProcessor();
$processor->importStylesheet($stylesheet);
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 🙂