我的网站上有一个上传系统,您可以在其中上传vcards。我还写了一个vcard解析器,它将把正确的字段放在数据库中。
唯一的问题是,当我上传我的vcard(使用laravel)时,我无法分解文件内容。
foreach (Input::file('vcards', array()) as $vcard)
{
if ($vcard->guessExtension() !== 'vcf')
{
continue;
}
$filename = uniqid() . '.vcf';
$vcard->move(storage_path('vcards'), $filename);
$contacts = array_filter(explode('BEGIN:VCARD', file_get_contents(storage_path("vcards/$filename"))));
}
$ contacts是一个计数数组,它是filestring。经过一些测试我发现,如果我只是爆炸('B',$ fileContents);该字符串中的任何其他字母。它会爆炸给定的字符串。
我也在服务器上试过这个,看看它是否与我的电脑有关,但是出现了同样的问题。
我也试图把弦剪掉(也许它太大了),也没用。
后来我注意到另一个vcard正在工作,但另一个不是可能有某种字符串编码我应该在解析它之前尝试吗?
答案 0 :(得分:2)
“explode()”区分大小写吗? vCard标准说“BEGIN”可以是任何情况(虽然在实践中,它几乎总是大写)。我会检查“BEGIN”属性中字符的大小写,以确保它们对于每个vCard都是大写的。另外,检查结肠周围的空间。