Intereting Posts
Получение WordPress Post ID текущего сообщения Фильтрация XML-файла с помощью PHP Что такое регулярное выражение PHP для преобразования текста, содержащего URL-адрес в гиперссылку? Какова наилучшая практика для ограничения определенных страниц для входа в систему только в Codeigniter? как передать значение с одной php-страницы на другую, используя сеанс Нет привязок вокруг одной строки, если в NetBeans SQLSTATE : Общая ошибка: 1366 Неправильное целочисленное значение: любое решение? Как вывести значение для каждого третьего результата инструкции foreach в php? gform_after_submission Сообщение для стороннего API Как создать список с использованием mailchimp API v1.3 php Как правильно сделать выпадающее меню списка для моего tbl_item в php JQuery autocomplete и PHP: заполнение поля ввода данными из базы данных mySQL на основе выбранной опции в поле автозаполнения PHP: APC включен, но все еще не работает? Определение html-кода внутри переменных PHP Facebook SDK для ошибки PHP – CurlException: 35: ошибка: 14094410: SSL-процедуры: SSL3_READ_BYTES: sslv3 отказ от рукопожатия

php fputcsv и охватывающие поля

Я как раз собирался задавать те же вопросы, что и вопрос, заданный здесь … Принуждение fputcsv к использованию Enclosure For * all * Fields

Вопрос состоял в том,

Когда я использую fputcsv для записи строки в дескриптор открытого файла, PHP добавит закрытый символ в любой столбец, который, по его мнению, нуждается в нем, но оставит другие столбцы без вложений.

Например, у вас может получиться такая строка

11, «Боб», Дженкинс, «200 главных улиц США» и т. Д.

За исключением добавления фиктивного пространства в конец каждого поля, есть ли способ заставить fputcsv всегда заключать столбцы с символом оболочки (по умолчанию для «)?

Ответ был:

Нет, fputcsv () только закрывает поле при следующих условиях

/* enclose a field that contains a delimiter, an enclosure character, or a newline */ if (FPUTCSV_FLD_CHK(delimiter) || FPUTCSV_FLD_CHK(enclosure) || FPUTCSV_FLD_CHK(escape_char) || FPUTCSV_FLD_CHK('\n') || FPUTCSV_FLD_CHK('\r') || FPUTCSV_FLD_CHK('\t') || FPUTCSV_FLD_CHK(' ') ) 

Нет опции «всегда прилагать».

Мне нужно создать CSV-файл, в которое будет вложено каждое поле … Каким будет наилучшее решение?

Заранее спасибо…

Solutions Collecting From Web of "php fputcsv и охватывающие поля"

Бросьте свою собственную функцию – ее не сложно:

  function dumbcsv($file_handle, $data_array, $enclosure, $field_sep, $record_sep) { dumbescape(false, $enclosure); $data_array=array_map('dumbescape',$data_array); return fputs($file_handle, $enclosure . implode($enclosure . $field_sep . $enclosure, $data_array) . $enclosure . $record_sep); } function dumbescape($in, $enclosure=false) { static $enc; if ($enclosure===false) { return str_replace($enc, '\\' . $enc, $in); } $enc=$enclosure; } 

(выше используется стирание в стиле unix)

C.

Обходной путь: предположим, что у вас есть данные в двумерном массиве, вы можете добавить строку, которая заставит котировку, и вы уверены, что не содержится в ваших данных (здесь # @ @ # здесь), а затем удалите ее:

  $fp = fopen($filename, 'w'); foreach ($data as $line => $row) { foreach ($row as $key => $value) { $row[$key] = $value."#@ @#"; } fputcsv($fp, $row); } fclose($fp); $contents = file_get_contents($filename); $contents = str_replace("#@ @#", "", $contents); file_put_contents($filename, $contents);