可以';t在文件上载后分解字符串


Can't explode string after file upload

我的网站上有一个上传系统,你可以在那里上传vcard。我还编写了一个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是一个单计数数组,它是文件字符串。经过一些测试,我发现,如果我真的爆炸了('B',$fileContents);该字符串中的任何其他字母。它将爆炸给定的字符串。

我也在我的服务器上尝试过,看看它是否与我的电脑有关,但同样的问题出现了。

我还试着把绳子剪断(也许它太大了),但也没有成功。

后来我注意到另一个vcard正在工作,但另一个没有。也许在解析它之前我应该尝试某种字符串编码?

"explode()"区分大小写吗?vCard标准规定"BEGIN"可以是任何情况(尽管在实践中,它几乎总是大写)。我会检查"BEGIN"属性中字符的大小写,以确保每个vCard的字符都是大写的。此外,请检查冒号周围是否有空格。