PHP 4.x Based vCard Reader/Writer Class
by Andreas Haberstroh
Ever since I discovered the Internet Mail Consortium website (imc.org) and learned 
about vCard and iCalendar files, I've been waiting for a PHP library that could both 
read and write these file formats, along with allowing access to the components and 
properties in a functional manner. Unfortunately, many attempts that have popped up 
on the Internet fall short of usefulness for me. Most classes that I've seen require 
direct access to internal class variables. This requires intense knowledge of the 
format for vCard and iCalendar. I'm a firm believer in encapsulation. So, I cracked 
open the latest RFC's on vCard and iCalendar formats and decided, it's time to 
roll my own.
My class library borrowed from a few of the libraries I found. Mostly, I borrowed 
the parameter parsing code. I used stuff from File_IMC on PEAR, written by 
Marshall Roch <
[email protected]> and Paul Jones <
[email protected]>. I've also borrowed 
code from the vCard PHP project  <http://vcardphp.sourceforge.net>, written by 
Frank Hellwig <
[email protected]>.
These classes are broken into the following hierarchical tree:
imcComponent
    imc_vCard
imcProperty
    imcPropertyAdr
    imcPropertyN
imcProperties live inside a imcComponent. The base imcComponent class can also parse 
iCalendar files. I'm currently working on a library to deal with iCalendar files. 
I've included a simple example application called test_vcard.php. This shows using 
the vCard object as a stand alone object, and also parses a simple vcf file and 
displays the results.
For a full blown usage sample, I'd suggest visiting http://www.ibusy.com/addressbook/
This sample allows for reading and writing to an addressbook. Storing more than 50 names
in the address book can cause problems, in that the webserver needs to read and parse the
contents of the entire file, even when paging. A better solution would be to store the
data in a database.