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

hm2xizp9  于 2023-06-04  发布在  PHP
关注(0)|答案(2)|浏览(354)

我正在使用Laravel 4生成Google产品提要。我使用的是Blade文件,但是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>

Blade文件中没有空间。但是,输出是:

<?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>
....

为什么要增加这个空间?我只是不知道它会从哪里来!这看起来不是什么大问题,但它会导致提要验证失败并被Google拒绝。如果不能确定它的来源,有没有办法在处理后将其剥离?
非常感谢。

pxyaymoc

pxyaymoc1#

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

<?php
Route::get('/', function () {
    return "Hello";
});
...

收件人:

<?php
Route::get('/', function () {
    return "Hello";
});
...
ubof19bj

ubof19bj2#

我解决了这个问题,在下载文件之前使用这个函数

public function googleFeed()
{
    ob_clean();
    //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');

}

相关问题