2009-09-07 5 views
1

J'ai eu récemment un problème ... Je voulais transférer mes contacts BOF mon LG U990 Viewty à mon iPhone 3GSConvert vCard vrac contacter fichier aux fichiers simples

Je les contacts de exporté mon LG dans une vCard fichier contenant toutes les adresses en un seul comme

BEGIN:VCARD 
VERSION:2.1 
N;CHARSET=UTF-8:A; 
TEL;CELL;CHARSET=UTF-8:*121# 
REV:20120720T081000Z 
END:VCARD 

maintenant, le format ci-dessus se répète pour tous les contacts ... dans ce fichier unique ...

Je voulais convertir ce fichier unique aux fichiers VCF originaux ... ne sachant pas qu'ils ne pouvaient pas être importés sur iPhone aussi :(

actualy Solution: Je avais besoin de télécharger le fichier vCard en vrac d'origine à une nouvelle comptes gmail contacts et synchroniser mes contacts à cette liste dans iTunes ... qui finalement je l'ai fait

Cependant, je fait ce code qui est en PHP généralement disponible comme un logiciel payant que les gens achètent pour déchiffrer les contacts ... voici le code ci-dessous ... GRATUIT

contacts.txt est ce fichier ... ouvrir ce fichier vCard dans l'éditeur de texte et copiez le contenu et faire ce fichier contacts.txt

$filename = "contacts.txt"; 
$fd = fopen ($filename, "r"); 
$contents = fread ($fd,filesize ($filename)); 

fclose ($fd); 
$delimiter = "BEGIN:VCARD"; 
$splitcontents = explode($delimiter, $contents); 
$counter = ""; 
$write = ""; 
$finalName = ""; 

foreach ($splitcontents as $color) 
{ 
    $counter = $counter+1; 
    $first = strpos($color, "UTF-8:"); 
    $second = strpos($color, "TEL;"); 
    $name = substr($color, $first+6, $second-$first-7); 

    $wordChunks = explode(";", $name); 

    for($i = 0; $i < count($wordChunks); $i++) 
    { 
     if(trim($wordChunks[0])!="" || trim($wordChunks[1])!="") 
      $finalName .= " ".$wordChunks[$i]; 
    } 

    $finalName= trim($finalName); 
    $fileName = $finalName.".vcf"; 

    $ourFileHandle = fopen($fileName, 'w') or die("can't open file"); 
    $stringData = "BEGIN:VCARD ".$color; 
    fwrite($ourFileHandle, $stringData); 
    fclose($ourFileHandle); 

    $finalName = ""; 

} 

ce va enfin faire miltuple .vcf fichiers de format donné ci-dessus ...

MA QUESTION: QU'EST-CE QUE JE L'AI était très simple et a des lacunes - PEUT-ON CI-DESSUS ET LA ITÉRATION FILTRATION DANS UN PHP expression régulière?

ce serait un bon apprentissage?

+1

Que voulez-vous dire par "Une expression régulière PHP"? Une expression? Pas de boucle foreach? Pas de boucle interne? Je m'interroge sur tout ce que vous faites dans votre code. N'est-il pas plus facile de séparer après la fin: VCARD? – tuergeist

+0

Pourrait être plus facile de cette façon ... c'est pourquoi j'ai dit qu'il avait des failles ... je veux dire un filtre d'expression preg_replace etc ... – foxybagga

Répondre

1
  1. Lire le fichier et obtenir une chaîne du contexte

    NSData *String_Data = [NSData dataWithContentsOfFile:yourfilepath]; 
    NSString *theString = [[NSString alloc] initWithData:String_Data encoding:NSUTF8StringEncoding]; 
    
  2. Obtenez tableau de toutes les lignes dans le contexte

    NSArray *lines = [theString componentsSeparatedByString:@"\n"]; 
    
  3. Run pour la boucle à travers chaque ligne: Check préfixe pour BEGIN: ou END:

    NSString * [email protected]""; 
    for (int i=0; i<[lines count];i++){ 
    [stringForVCard stringByAppendingString:[lines objectAtIndex:i] 
    if ([line hasPrefix:@"END"]) 
    [stringForVCard writeToFile:[NSString stringWithFormat:@"Make your own file path for each VCF"] atomically:TRUE encoding:NSUTF8StringEncoding error:nil ]; 
    //Empty the string 
    [email protected]"";} 
    
+0

merci pour la réponse mate! – foxybagga

+0

@foxybagga J'ai le même problème, je veux convertir le fichier de contact de vCard en vrac en simple.vcf fichiers, mais je ne suis pas sûr de savoir comment utiliser le code donné, est-il obligatoire que je dois avoir PHD, je ne peux pas le faire d'une autre manière? – AlFagera

0

structure du fichier :

index.php

contacts.vcf

un (dossier)

$filename = "contacts.vcf"; 
$file = file($filename); 
$i=1; 
$content = ""; 
foreach ($file as $line) 
{ 
    if($line == 'BEGIN:VCARD'."\r\n"){ 
     $content = ""; 
    } 
    $content .= $line; 
    if($line == 'END:VCARD'."\r\n"){ 
     $fileName = $i.".vcf"; 
     $ourFileHandle = fopen('a/'.$fileName, 'w') or die("can't open file"); 
     fwrite($ourFileHandle, $content); 
     fclose($ourFileHandle); 
     $i++; 
     echo '<br>' . $i .' 
'; 
    } 
} 
Questions connexes