文件上传后无法分解字符串

时间:2014-04-18 15:49:58

标签: php file laravel laravel-4 vcard

我的网站上有一个上传系统,您可以在其中上传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正在工作,但另一个不是可能有某种字符串编码我应该在解析它之前尝试吗?

1 个答案:

答案 0 :(得分:2)

“explode()”区分大小写吗? vCard标准说“BEGIN”可以是任何情况(虽然在实践中,它几乎总是大写)。我会检查“BEGIN”属性中字符的大小写,以确保它们对于每个vCard都是大写的。另外,检查结肠周围的空间。