My csv export displaying html, how to get rid of?

后端 未结 3 830
悲&欢浪女
悲&欢浪女 2020-12-16 08:38

I\'ve seen this asked before and I am having trouble getting this to work properly after trying a number of solutions. The problem is I can\'t get my data to export into a c

相关标签:
3条回答
  • 2020-12-16 08:44

    Place, ob_end_clean(); before you output the csv.

    ob_end_clean() meaning: "Clean (erase) the output buffer and turn off output buffering" - PHP manual.

    0 讨论(0)
  • 2020-12-16 08:45

    The logic for it to work is to construct your php script so that it:

    1. first echoes all the html/javascript... content intended for the browser page like echo "<html...>;" (this already uses php's output buffer behind the scenes)
    2. after that cleans the php's output buffer so far, with ob_end_clean() (depending how ob_start() was called this may prevent the previous export) or ob_clean() which just sends content so far to the browser and cleans the buffer without turning it off.
    3. lastly uses this clean output buffer again to export any further content (as downloadable csv in our case) to the browser, like shown above by wowzuzz. So if any html is echoed by the script after that, it will be included in the csv as well.
    0 讨论(0)
  • 2020-12-16 09:08

    Got it working!

    I invoked my csv code before anything on the page. :) Then I did my connection to my table, then did my logic for my code. I didn't have an ob_start or ob_flush on my main file which made a big difference. I had the ob_clean before the while loop and then I did an exit() after declaring the header. Hopefully, this explains it well.

    Here is my code.

    if (isset($_POST["hidden"])) {
        $sql = "SELECT * FROM `newsletter`";
        $result = mysql_query($sql);
    
        ob_end_clean();
    
        $fp = fopen('php://output','w');
    
        while ($list = mysql_fetch_assoc($result)) {
            fputcsv($fp, $list);
        }
    
        header('Content-Type: text/csv; charset=utf-8');
        header('Content-Disposition: attachment; filename=data.csv');
    
        exit();
    }
    
    0 讨论(0)
提交回复
热议问题