PHP / Smarty中输出开头的空格字符 - 如何跟踪它?

时间:2011-08-10 15:26:04

标签: php csv smarty

我正在使用智能的PHP处理一个相当大的Web应用程序。其中一部分需要以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(标题)中的第一行如下所示:

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

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

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

1 个答案:

答案 0 :(得分:1)

尝试在打开<?php标记之前和关闭?>标记后立即查找空格(如果使用的话)。这些是意外占用空间的常见地方。