Php 下载的.csv文件包含作为文本的HTML标记

Php 下载的.csv文件包含作为文本的HTML标记,php,csv,html,Php,Csv,Html,我想通过链接下载.csv文件。为此,在模板文件中定义了下载链接 为了生成.csv文件,我编写了一段代码,如下所示 public function loadPartnerApplicantData() { $inboundBo = BoFactory::getInboundHttpRequestBo(); $fileType = $inboundBo->getSanitizedGetParam('f'); $formId = $inboundBo->getSan

我想通过链接下载.csv文件。为此,在模板文件中定义了下载链接

为了生成.csv文件,我编写了一段代码,如下所示

public function loadPartnerApplicantData() {
    $inboundBo = BoFactory::getInboundHttpRequestBo();
    $fileType = $inboundBo->getSanitizedGetParam('f');
    $formId = $inboundBo->getSanitizedGetParam('fid');
    ServiceFactory::getFormService()->loadFormDetails($formId);
    $dbTable = BoFactory::getFormBo()->getFormDbTable($formId);
    $formName = slugify(BoFactory::getFormBo()->getFormName());
    $fileName = $formName . "." . time();
    $fieldMasterSqlQuery = "SELECT field_name,field_label FROM" . FORM_FIELDS_MASTER_v2 . "where form_id='$formId' order by serial_no";
    $fieldMasterSqlQueryStatus = mysql_query(mysql_fetch_assoc($fieldMasterSqlQuery));
    $csvHeader = "";
    $fieldNameArray = array();
    foreach ($fieldMasterSqlQueryStatus as $key => $value) {
        if ($value['field_name'] == 'declaration' || $value['field_name'] == 'docPicture') {
            continue;
        }
        $csvHeader.= "\"{$value['field_label']}\";";
        $fieldNameArray[] = $value['field_name'];
    }
    $queryString = implode(",", $fieldNameArray);
    $dbTableSqlQuery = "SELECT $queryString FROM `$dbTable`";
    $dbTableSqlQueryStaus = mysql_query(mysql_fetch_assoc($dbTableSqlQuery));
    ef_clearBuffer();
   // To generate csv
    header("Content-type: text/csv");
    header("Content-Disposition: attachment; filename=$fileName.csv");
    header("Pragma: no-cache");
    header("Expires: 0");
    echo($csvHeader);
    foreach ($dbTableSqlQueryStaus as $applicantData) {
        echo "\n";
        foreach ($fieldNameArray as $fieldName) {
            echo "\"$applicantData[$fieldName]\";";
        }
        echo "\n";
    }
}
并生成所需的.csv

但是在.csv文件的末尾,会显示浏览器的HTML标记。不应该在那里

请建议我从生成的.csv文件中删除html内容


提前谢谢

可能在头操作之前您已经有了一些echo命令,那么您要下载的.csv文件将包含您以前编写的所有字符串。

因为您的函数将处理请求直到结束(即,传递所有数据),并且您不希望框架(无论您使用哪个)继续处理,加

exit(0);

作为函数的最后一行。这将在内容交付后停止处理,并阻止框架/环境发送其他数据。

不要尝试删除这些字符,这是在治愈症状,而不是治愈原因。找出这些字符的来源,然后解决这个问题。从将内容写入文件开始,而不是将其发送到浏览器。您可以通过输出boffering优雅地实现这一点,这样就不必更改上面的代码。然后检查文件内容是否已经包含html字符。我怀疑不是,在这种情况下,代理或缓存试图“智能化”会有问题。在这种情况下,请检查已交付的标题。感谢@arkascha的建议。我通过添加exit完成了我的工作;函数末尾的代码语句(在csv准备好之后),您称之为解决方案?那么答案是什么呢?html序列来自哪里?是什么让你确信明天不会再发生类似的事情?当你想在编程方面取得更好的成绩时,最重要的事情是了解正在发生的事情。这不同于在事情出现效果之前尝试“循环”,不知何故。。。