2009-09-07 26 views
1

最近,我有一個問題......我想我來回LG U990的Viewty轉讓我接觸到我的iPhone 3GS轉換電子名片散聯繫人文件爲單.vcf文件

我出口從我的LG接觸到vCard包含所有在一個爲

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

現在上面的格式重演所有聯繫人......在單一文件中的所有地址文件...

我想轉換此單一文件到原始文件VCF ...不知道他們不能導入到iPhone也:(

Actualy解決方案:我需要上傳原始批量vCard文件到一個新的Gmail的帳戶的聯繫人和同步我的聯繫人在iTunes該列表......這最後我做到

不過,我做了這個代碼是在PHP一般可作爲一個付費軟件,人們購買破譯的聯繫人...這裏是下面的代碼...免費

contacts.txt是該文件...在文本編輯器中打開該vCard文件並複製內容並使此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 = ""; 

} 

這將最終使miltuple的.vcf上面定格式的文件...

我的問題:我所做的是很簡單,存在漏洞 - 我們可以做在一個PHP正則表達式上面的迭代和過濾?

這將是一個偉大的學習?

+1

你是什麼意思與 「A PHP正則表達式」?一個表達?沒有foreach循環?沒有內在的循環? 我想知道你在代碼中做的所有事情。僅僅在END:VCARD之後進行分割並不容易? – tuergeist 2009-09-07 11:21:05

+0

可能是它更容易的方式...這就是爲什麼我說它有漏洞...我的意思是preg_replace表達式篩選器等... – foxybagga 2009-09-07 16:15:31

回答

1
  1. 讀取文件並獲取上下文的字符串

    NSData *String_Data = [NSData dataWithContentsOfFile:yourfilepath]; 
    NSString *theString = [[NSString alloc] initWithData:String_Data encoding:NSUTF8StringEncoding]; 
    
  2. 獲得通過每一行的背景下

    NSArray *lines = [theString componentsSeparatedByString:@"\n"]; 
    
  3. 運行的循環中的所有行的數組:檢查BEGIN的前綴:或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

感謝您的響應隊友! – foxybagga 2011-07-21 20:03:35

+0

@foxybagga 我有同樣的問題,我想將vCard批量聯繫文件轉換爲單個。vcf文件,但我不確定如何利用給定的代碼,它是強制性的,我必須有博士學位,我不能以另一種方式嗎? – AlFagera 2017-04-28 14:11:57

0

文件結構:

的index.php

聯絡人.vcf

一(文件夾)

$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 .' 
'; 
    } 
} 
相關問題