PHP/Smarty输出开始处的空格字符-如何跟踪它


Space character at start of output in PHP/Smarty - how to track it?

我正在处理一个相当大的web应用程序在PHP与smarty。其中一部分需要以CSV格式输出报告。我设置了所有必需的标头并将数据传递给smarty模板:

$template->assign('headers', $report->get_headers());
$template->assign('data', $report->get_data());

我的模板是这样的:

{strip}
{assign var="newline" value="'n"}
{foreach from=$headers item=h name=hdr}
    "{$h|replace:'"':'""'}"
    {if !$smarty.foreach.hdr.last},{/if}
{/foreach}
{$newline}
{if trim($warntext) != ''} 
    "{$warntext|replace:'"':'""'}"
    {$newline}
{/if}
{foreach from=$data item=row name=res}
    {foreach from=$row item=v name=val}
        "{$v|replace:'"':'""'}"
        {if !$smarty.foreach.val.last},{/if}
    {/foreach}
    {if !$smarty.foreach.res.last}{$newline}{/if}
{/foreach}
{/strip}

一切都很好——除了一个问题。在输出的最开头打印了一个空格字符,因此CSV (headers)中的第一行看起来像这样:

[space-char]"ID","Name","Reg date",...

结果,Excel弄乱了第一个标题:A1单元格包含' "ID"'(当然没有单引号)。显然,在某个地方打印了这个空格字符——但是我怎么才能找到它呢?我尝试跟踪报告的执行(有几十个php文件从彼此内部被required -总共有超过10K行代码来获取报告)。我试着搜索echoprintprint_r -但没有。我现在快绝望了。如有任何帮助,我将不胜感激。

注:请不要评论/回答"让他们修复输出文件",因为这些是我正在处理的外部客户:我不能告诉他们"请在Excel中打开文件之前编辑文件"。

试着在打开<?php标签之前和关闭?>标签之后寻找空白(如果使用的话)。