присоединение строки php - прикрепите csv из строки к сообщению электронной почты - PullRequest
0 голосов
/ 13 декабря 2011

Я хочу переписать код ниже, чтобы сгенерировать строку. Эту строку я хочу прикрепить к эамилю. Это должно появиться как файл CSV.

$fh = fopen($file,'w');

    function __outputCSV(&$vals, $key, $filehandler) {
        fputcsv($filehandler, $vals, ';', '"');

    }
   array_walk($aData, '__outputCSV', $fh);
   fclose($fh);

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Очевидным и ленивым подходом было бы не переписать его, а просто создать временный файл и затем вызвать file_get_contents().

Это, однако, было бы скучно, поэтому я собираюсьпредложить то, что, возможно, является слишком сложным подходом, но он должен хорошо работать и будет полностью выполнен в памяти:

Используйте этот класс , который приведен в руководстве по PHP в качестве примера того, какнаписать собственный обработчик протокола и следующий пример кода:

function __outputCSV(&$vals, $key, $filehandler) {
    fputcsv($filehandler, $vals, ';', '"');
}

stream_wrapper_register("var", "VariableStream");

$myCSVdata = "";

$fh = fopen('var://myCSVdata', 'w');
array_walk($aData, '__outputCSV', $fh);
fclose($fh);

echo $myCSVdata; // Ta Da!
0 голосов
/ 13 декабря 2011

Лучше всего получить класс электронной почты, совместимый с MIME, который может отправлять электронные письма с вложениями. Я вспоминаю, как некоторое время назад использовал RMail или PHPMimeMail, вам придется его погуглить.

Иначе, вам нужно научиться самостоятельно создавать почту MIME. Но, несмотря на все трудности, я действительно рекомендую вам получить класс, который уже делает это для вас.

EDIT:

Сначала я не понял вашего вопроса, может быть, вам следует полностью переформатировать и изменить название. Вот мое предложение:

$data = '';
foreach($aData as $aDataLine) {
    foreach($aDataLine as $aDataKey => $aDataField) {
        $aDataLine[$aDataKey] = '"'.str_replace('"', '\\"', $aDataField).'"';
    }
    $data .= implode(',', $aDataLine)."\n";
}
//$data contains your CSV

Не думаю, что я что-то забыл, это ДОЛЖНО работать из коробки ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...