Page 1 sur 1

Comment importer/exporter une vcard en PHP

Posté : 15 déc. 2008, 12:20
par stanlebrave
Bonjour,

Tout est dans le titre du post. En fait je veux pouvoir l'enregistrer dans SQL et pouvoir générer de SQL en vcard.

Pour info : http://fr.wikipedia.org/wiki/VCard

Merci tout plein pour toute info.

Posté : 15 déc. 2008, 14:39
par Ripat
Si tu as cherché un tant soit peu, tu auras certainement trouvé le script suivant
http://sourceforge.net/projects/vcardphp/

Le format Vcard ne m'a pas l'air compliqué, tu pourrais te développer toi même un petit parser maison sans trop de difficultés
http://www.imc.org/pdi/vcard-21.txt.

Posté : 15 déc. 2008, 18:31
par Hywan
Hey :),

L'exploitation est quasiment la même que pour iCalendar. Si tu trouves des scripts analogues, il ne te reste qu'à changer des mots-clés et le tour est joué ;-).

Posté : 16 déc. 2008, 11:46
par stanlebrave
merci :o)

Posté : 16 déc. 2008, 15:22
par sadeq
Voici un p'tit script que j'ai créé pour créer des vcards :
// Collecte des données de la VCard
$vcard['titre'] 					= "M.";
$vcard['nom'] 						= "Leroy";
$vcard['prenom'] 					= "Michel";
$vcard['prenom2'] 					= "";
$vcard['surnom'] 					= "l.Michel";
$vcard['dateNaissance'] 			= date("Ymd", strtotime("01/01/1990"));
$vcard['mobiles'] 					= "+33(06)24000000";
$vcard['sitesWeb']['perso'] 		= "l.Michel.free.fr";
$vcard['sitesWeb']['pro'] 			= "";
$vcard['emails']['perso'] 			= "[email protected]";
$vcard['emails']['pro'] 			= "";
//
$vcard['domicile']['rue'] 			= "1 Rue des fleurs";
$vcard['domicile']['cp'] 			= 72000;
$vcard['domicile']['ville'] 		= "Le Mans";
$vcard['domicile']['département'] 	= "Sarthe";
$vcard['domicile']['région'] 		= "Pays de la loire";
$vcard['domicile']['Pays'] 			= "France";
$vcard['domicile']['téléphones'] 	= "+33(02)43000000";
$vcard['domicile']['fax'] 			= "";
//
$vcard['travail']['organisme'] 		= "Chez Michel";
$vcard['travail']['service'] 		= "Développement";
$vcard['travail']['bureau'] 		= "Programmation Web";
$vcard['travail']['fonction'] 		= "Analyste programmeur";
$vcard['travail']['rue'] 			= "1 rue de la gare";
$vcard['travail']['cp'] 			= 72000;
$vcard['travail']['ville'] 			= "Le Mans";
$vcard['travail']['département'] 	= "Sarthe";
$vcard['travail']['région'] 		= "Pays de la loire";
$vcard['travail']['Pays'] 			= "France";
$vcard['travail']['téléphones'] 	= "+33(02)43000000";
$vcard['travail']['fax'] 			= "+33(02)43000000";
//
$vcard['uid'] 						= md5("$vcard[nom]}{$vcard[prenom]}"); //cryptage basé sur le nom et prénom
$vcard['dateCréation'] 				= date("Ymd"); // date création de la VCard

// Création du fichier VCard
$etat = file_put_contents("{$vcard[nom]}_{$vcard[prenom]}.vcf", 
"BEGIN:VCARD
VERSION:2.1
N:{$vcard[nom]};{$vcard[prenom]};{$vcard[prenom2]};{$vcard[titre]}
FN:{$vcard[prenom]} {$vcard[nom]}
NICKNAME:{$vcard[surnom]}
ORG:{$vcard[travail][organisme]};{$vcard[travail][service]}
TITLE:{$vcard[titre]}
TEL;WORK;VOICE:{$vcard[travail][téléphones]}
TEL;HOME;VOICE:{$vcard[domicile][téléphones]}
TEL;CELL;VOICE:{$vcard[mobiles]}
TEL;WORK;FAX:{$vcard[travail][fax]}
TEL;HOME;FAX:{$vcard[domicile][fax]}
ADR;HOME:;{$vcard[domicile][bureau]};{$vcard[domicile][rue]};{$vcard[domicile][ville]};{$vcard[domicile][département]}/{$vcard[domicile][région]};{$vcard[domicile][cp]};{$vcard[domicile][pays]}
ADR;WORK:;{$vcard[travail][bureau]};{$vcard[travail][rue]};{$vcard[travail][ville]};{$vcard[travail][département]}/{$vcard[travail][région]};{$vcard[travail][cp]};{$vcard[travail][pays]}
LABEL;HOME;ENCODING=QUOTED-PRINTABLE:{$vcard[domicile][bureau]}=0D=0A{$vcard[domicile][rue]}=0D=0A{$vcard[domicile][cp]} {$vcard[domicile][ville]}, {$vcard[domicile][département]}/{$vcard[domicile][région]}=0D=0A{$vcard[domicile][pays]}
LABEL;WORK;ENCODING=QUOTED-PRINTABLE:{$vcard[travail][bureau]}=0D=0A{$vcard[travail][rue]}=0D=0A{$vcard[travail][cp]} {$vcard[travail][ville]}, {$vcard[travail][département]}/{$vcard[travail][région]}=0D=0A{$vcard[travail][pays]}
URL;WORK:{$vcard[sitesWeb][perso]}
ROLE:{$vcard[travail][fonction]}
BDAY:{$vcard[dateNaissance]}
EMAIL;PREF;INTERNET:{$vcard[emails][perso]}
REV:$dateCréation
UID:$uid
END:VCARD");
//
// Afficher le résultat
echo "<h1>Vcard: {$vcard[nom]}_{$vcard[prenom]}.vcf</h1>";
print_r($vcard);
// Etat de l'exécution
if ($etat && file_exists("{$vcard[nom]}_{$vcard[prenom]}.vcf")){
	echo "<h5><i>Etat: Vcard bien créée: <a href=\"{$vcard[nom]}_{$vcard[prenom]}.vcf\">Visualiser</a></i></h5>";
}
else {
	echo "<h5><i>Etat: Vcard non créée!</i></h5></p>";
}
NOTA: Les données d'exemple sont écrites en dur, elle peuvent être remplacées par des $_GET ou $_POST pour interfacer ce programme avec un formulaire de collecte des données.

Re: Comment importer/exporter une vcard en PHP

Posté : 02 févr. 2010, 14:17
par Tom
Bonjour, je cherche un script qui permet d'uploader une VCARD et d'enregistrer :

Nom Prénom (dans le même champ)
Email
Entreprise
Tel 1
Tel 2
Adresse (en un seul champ)
Site internet

.. Dans une table de ma base de donnée X.

Si quelqu'un possède un tel script ??
D'avance merci :-D

Re: Comment importer/exporter une vcard en PHP

Posté : 25 mars 2015, 12:35
par ValooWart
Je fais remonter le sujet pour la simple et bonne raison que je cherche également à importer un fichier vCard dans ma base de donnée SQL.
Pour donner un semblant de réponse à la vieille question de Tom, j'ai télécharger la class php vCardphp sur sourceforge.net. Cette classe permet seulement de prendre un fichier vCard et de l'afficher au format HMTL.
Le module contient 2 fichiers majeurs : vbook.php et vcard.php
- vbook.php est la page qui va récupérer la vCard importé pour la reformater au format HTML
- vcard.php contient les class qui vont permettre de décortiquer le fichier vCard pour en extraire les informations.

Le problème est qu'une fois converti en HTML, on ne peut absolument rien récupérer pour l'insérer dans un autre support (fichier XML, base SQL, ect...)
La solutions qui se propose est la suivante :
- Modifier vBook.php pour qu'il exécute une série de requête d'insertion au lieu d'écrire un fichier HTML.

Je vous proposerais mon script une fois fait !

Re: Comment importer/exporter une vcard en PHP

Posté : 26 mars 2015, 14:48
par Hywan
@ValooWart: Regarde du côté de sabre/dav, notamment sabre/vobject, tu vas trouver ton bonheur :-).