前几天我朋友诺基亚的手机屏坏了,不知道送到哪去修了,反正还没修好,但是把联系人信息弄回来了,一个文件家,全部是vcf格式的文件,一个一个的。想把这些联系人存到一个暂时用的手机里。杯具的事情发生了,不知道怎么弄。
当然我也不知道怎么弄,最后我说那要不把这些号码在一张纸上打印出来吧,凑活着用用。
那我们身为程序员,肯定弄一个程序解决了,自己手动操作不要太痛苦哦。
代码很短,写加调试加结果,十分钟搞定收工。
代码附上:
<pre>
<h1>遍历vcf文件获取电话号码</h1>
<?php
file_put_contents('log.txt','');
if($handle = opendir('abc')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_file('./abc/'.$file)){
$poa = substr($file,0,(strrpos($file,'.')));
$s = file_get_contents('./abc/'.$file);
preg_match_all("|CELL:(\+)?(\d+)|",$s,$o);
preg_match_all("|HOME:(\+)?(\d+)|",$s,$oo);
$str = "姓名:".sprintf("%-30s",$poa)." 号码:{$o[0][0]} {$oo[0][0]}"."\r\n";
file_put_contents('log.txt',$str,FILE_APPEND);
}
}
}
closedir($handle);
}
?>
</pre>
当然,快餐做的,代码还是有些缺陷的,但是针对当前问题还是完美解决的!
PS:
我想如果一个人有四个号码,该怎么样提取。却发现这么一个情况
TEL;WORK;VOICE:123123
TEL;CELL:13771106535
不同软件存储的vcf文件的电话前缀是不一样的,所以需要各位根据实际的情况处理了。
改这里你会获得你要的结果。
preg_match_all("|
CELL: (\+)?(\d+)|",$s,$o);
preg_match_all("| HOME: (\+)?(\d+)|",$s,$oo);
preg_match_all("| HOME: (\+)?(\d+)|",$s,$oo);