fputcsv之后的PHP打印

时间:2018-10-04 10:01:40

标签: php fputcsv

构建CSV文件后,在将任何内容打印到PHP页面时遇到问题。

这里是输入->数组的解析。

 <?php 
 if (isset($_POST['convert'])) {
    PrintExcel();
  }
    function PrintExcel() {
    ob_clean();
    ob_start();
    global $errors, $invalid_input, $finalassembly, $csv_output, $headers, $filename;
    $input = $_POST['convert'];
    $inputdata = explode("\n", $input);
    $invalid_input = array();
    $csv_output = array();
    $filename = date("Y-m-d h:i:sa") . substr(str_shuffle(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ),0, 1) . substr(str_shuffle  (aBcEeFgHiJkLmNoPqRstUvWxYz0123456789),0, 31);
    $headers = ['Flag'];
    foreach ($inputdata as $key => $val) {

        $value = str_replace(array("\r", "\n", "\r\n", "\v", "\t", "\0","\x"), " ", $val);
        $pos = substr($value,0, strpos($value, ' '));
        if (preg_match("[\byes\b|\bno\b]", $val) && (preg_match("enter code here[\bCT\b|\bsi\b]", $val) ===1)){
            $usergroup = ",,,,,,,,,,,333/333/xxx/FffffK,";}
        else {
            $invalid_input[] = "Could not map $pos qualifications to any 
            usergroup";
                continue;
            }
        if (!empty($pos) && (!empty($usergroup))) {                           
        $finalassembly = "update,".$pos . $usergroup.",";
        $csv_output[] = $finalassembly; 
       }   else {
        continue; 
        }
    }
    file_put_contents('errors.txt', $invalid_input);
    $recoveredData = file_get_contents('errors.txt');
    $recoveredArray = unserialize($recoveredData);
    print_r($recoveredArray);
    $empty_input = array_filter($csv_output);
    if (!empty($empty_input)) 
        saveCSV();
    }

在此函数中,我正在寻找有效的输入并将无效的输入保存到数组中。我尝试打印该数组,尝试将其保存为文本,然后打印出来。只要有任何有效的输入数据,就不会打印。

当我有有效的输入数据时,它将运行:

function saveCSV() {
    global $errors, $finalassembly, $csv_output, $headers, $filename;
    ob_end_clean();
    $file = fopen('php://memory', "w");
      fputcsv($file, $headers);
      foreach ($csv_output as $line)
      {
      fputcsv($file,explode(',',$line));
      }
      rewind($file);
      $csvFile = stream_get_contents($file);
    fclose($file);
    header('Content-Type: text/csv');
    header('Content-Length: '.strlen($csvFile));
    header('Content-Disposition: attachment; filename="'.$filename.'.csv"');

    exit($csvFile);>?

但是不会打印任何错误,并且我无法打印任何变量。

关于为什么我什么都不打印的任何线索?

在调用saveCSV()函数之前和之后,我都尝试过打印它们。

1 个答案:

答案 0 :(得分:1)

发送其他任何信息后都无法发送标题信息 内容

http://php.net/manual/de/function.header.php

如果要查看错误,请在标题说明中注明。

使用简单的echo $ csvFile代替exit()。