Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel生成的XML文件在开始时有空间_Php_Xml_Laravel_Laravel 4_Blade - Fatal编程技术网

Php Laravel生成的XML文件在开始时有空间

Php Laravel生成的XML文件在开始时有空间,php,xml,laravel,laravel-4,blade,Php,Xml,Laravel,Laravel 4,Blade,我正在使用Laravel4生成一个Google产品提要。我正在使用一个刀片文件来实现这一点,但是Laravel在输出的最开始添加了一个神秘的空格,这导致Google将XML文件视为无效而拒绝。你知道为什么吗 我的控制器是: public function googleFeed() { //generates a Google Merchant XML feed of products $products = DB::table('products')->get();

我正在使用Laravel4生成一个Google产品提要。我正在使用一个刀片文件来实现这一点,但是Laravel在输出的最开始添加了一个神秘的空格,这导致Google将XML文件视为无效而拒绝。你知道为什么吗

我的控制器是:

public function googleFeed()
{
    //generates a Google Merchant XML feed of products
    $products = DB::table('products')->get();
    $content = View::make('shop.googlefeed', ['products' => $products]);
    return Response::make($content, '200')->header('Content-Type', 'text/xml');

}
和我的刀片文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
    <channel>
    <title>Title</title>
    <link>http://example</link>
    <description>Desc</description>
        @foreach ($products as $product)
                <item>
                    <g:id>{{($product->id)}}</g:id>
                    <title>{{($product->productname)}}</title>
                    <link>http://example.com/product/{{($product->slug)}}</link>
                    <description>{{($product->shortdesc)}}</description>
                    <g:image_link>{{($product->imgurlthumb)}}</g:image_link>
                    <g:price>{{($product->productprice)}} GBP</g:price>
                    <g:gtin>{{($product->gtin)}}</g:gtin>
                    <g:condition>new</g:condition>
                    <g:availability>in stock</g:availability>
                </item>
        @endforeach
    </channel>
</rss>

标题
http://example
描述
@foreach($products as$product)
{{($product->id)}
{{($product->productname)}
http://example.com/product/{{($product->slug)}
{{($product->shortdesc)}
{{($product->imgurlthumb)}
{($product->productprice)}}英镑
{{($product->gtin)}
刚出现的
有现货的
@endforeach
刀片文件中没有空间。但是,结果是:

 <?xml version="1.0" encoding="ISO-8859-1"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>Title</title>
....

标题
....
为什么要添加此空间?我就是不知道它从哪里来!这似乎不是什么大问题,但它会导致feed无法通过验证,并被谷歌拒绝。如果无法确定其来源,是否有方法在处理后将其剥离


非常感谢。

当我注意到routes.php文件开头有一个空格时,我解决了这个问题。删除此选项修复了此问题。简单但令人沮丧,希望它能帮助别人!(空间可以位于大多数文件的开头。)


@limonte噢,对不起。Laravel4.只是在L5中重复了您的代码,空白没有这个问题。您的代码中的其他地方有空白,可能在包含的文件中。请确保在任何纯PHP文件中都没有关闭标记--
?>,这很可能是您出现问题的原因。我曾考虑过@EdCottrell,但包含的文件会在哪里?如您所见,该刀片文件中未包含任何内容。它能从别的地方来吗?ThanksI的意思是你的控制器的“上游”。不是包含在您发布的某个文件中的文件,而是包含您发布的文件的文件。
 <?php
Route::get('/', function () {
    return "Hello";
});
...
<?php
Route::get('/', function () {
    return "Hello";
});
...