[RESOLU] Comment importer/exporter une vcard en PHP

stanlebrave
Invité n'ayant pas de compte PHPfrance

15 déc. 2008, 12:20

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.

ViPHP
ViPHP | 1380 Messages

15 déc. 2008, 14:39

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.
ripat

ViPHP
ViPHP | 4674 Messages

15 déc. 2008, 18:31

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é ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

stanlebrave
Invité n'ayant pas de compte PHPfrance

16 déc. 2008, 11:46

merci :o)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

16 déc. 2008, 15:22

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.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Tom
Invité n'ayant pas de compte PHPfrance

02 févr. 2010, 14:17

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

Petit nouveau ! | 1 Messages

25 mars 2015, 12:35

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 !

ViPHP
ViPHP | 4674 Messages

26 mars 2015, 14:48

@ValooWart: Regarde du côté de sabre/dav, notamment sabre/vobject, tu vas trouver ton bonheur :-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).