PHP печать после fputcsv - PullRequest
       24

PHP печать после fputcsv

0 голосов
/ 04 октября 2018

У меня проблемы с печатью чего-либо на странице PHP после создания CSV-файла.

Вот разбор ввода -> массив.

 <?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();
    }

В этой функции I 'я ищу правильный ввод и сохраняю неверный ввод в массив .. Я пытался распечатать массив, я пытался сохранить его в текст, а затем распечатать его .... но ошибки не будут печататься, когда у меня есть ЛЮБОЙдопустимые входные данные.

Когда у меня есть действительные входные данные, это выполняется:

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 голосов
/ 04 октября 2018

Вы не можете отправлять информацию заголовка после отправки любого другого содержимого

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

, если хотите увидеть ошибки, закомментируйте инструкции заголовка.

Вместоиз exit () используйте простой echo $ csvFile.

...