【发布时间】:2014-04-18 15:49:57
【问题描述】:
我的网站上有一个上传系统,您可以在其中上传电子名片。我还写了一个 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 是一个计数数组,它是文件字符串。经过一些测试,我发现,如果我只是做 explode('B', $fileContents);该字符串中的任何其他字母。它将爆炸给定的字符串。
我也在我的服务器上试过这个,看看它是否可能与我的电脑有关,但出现了同样的问题。
我也试过把绳子剪断(可能太大了),也没有用。
后来我注意到另一个 vcard 正在工作,但另一个没有,在解析它之前我应该尝试某种字符串编码吗?
【问题讨论】:
-
if (!$vcard->guessExtension() === 'vcf')好像很奇怪,不应该是if ($vcard->guessExtension() !== 'vcf')吗? -
是的,我知道,这很棘手,但它确实有效。也用你的语法
-
它是假的,所以它会在此之后继续,更正它:),但它对这个问题没有帮助
标签: php file laravel laravel-4 vcf-vcard