uawdijnntqw1x1x1
IP : 216.73.217.6
Hostname : webm002.cluster111.gra.hosting.ovh.net
Kernel : Linux webm002.cluster111.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
atelierpru
/
provence
/
6bf95
/
..
/
ecrire
/
inc
/
exporter_csv.php
/
/
<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'export de données au format CSV * * @package SPIP\Core\CSV\Export **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/charsets'); include_spip('inc/filtres'); include_spip('inc/texte'); /** * Exporter un champ pour un export CSV : pas de retour a la ligne, * et echapper les guillements par des doubles guillemets * * @param string $champ * @return string */ function exporter_csv_champ($champ) { #$champ = str_replace("\r", "\n", $champ); #$champ = preg_replace(",[\n]+,ms", "\n", $champ); #$champ = str_replace("\n", ", ", $champ); $champ = preg_replace(',[\s]+,ms', ' ', $champ); $champ = str_replace('"', '""', $champ); return '"' . $champ . '"'; } /** * Exporter une ligne complete au format CSV, avec delimiteur fourni * * @uses exporter_csv_champ() * * @param array $ligne * @param string $delim * @param string|null $importer_charset * Si défini exporte dans le charset indiqué * @return string */ function exporter_csv_ligne($ligne, $delim = ', ', $importer_charset = null) { $output = join($delim, array_map('exporter_csv_champ', $ligne)) . "\r\n"; if ($importer_charset) { $output = unicode2charset(html2unicode(charset2unicode($output)), $importer_charset); } return $output; } /** * Exporte une ressource sous forme de fichier CSV * * La ressource peut etre un tableau ou une resource SQL issue d'une requete * L'extension est choisie en fonction du delimiteur : * - si on utilise ',' c'est un vrai csv avec extension csv * - si on utilise ';' ou tabulation c'est pour E*cel, et on exporte en iso-truc, avec une extension .xls * * @uses exporter_csv_ligne() * * @param string $titre * titre utilise pour nommer le fichier * @param array|resource $resource * @param string $delim * delimiteur * @param array $entetes * tableau d'en-tetes pour nommer les colonnes (genere la premiere ligne) * @param bool $envoyer * pour envoyer le fichier exporte (permet le telechargement) * @return string */ function inc_exporter_csv_dist($titre, $resource, $delim = ', ', $entetes = null, $envoyer = true) { $filename = preg_replace(',[^-_\w]+,', '_', translitteration(textebrut(typo($titre)))); if ($delim == 'TAB') { $delim = "\t"; } if (!in_array($delim, array(',', ';', "\t"))) { $delim = ','; } $charset = $GLOBALS['meta']['charset']; $importer_charset = null; if ($delim == ',') { $extension = 'csv'; } else { $extension = 'xls'; # Excel n'accepte pas l'utf-8 ni les entites html... on transcode tout ce qu'on peut $importer_charset = $charset = 'iso-8859-1'; } $filename = "$filename.$extension"; if ($entetes and is_array($entetes) and count($entetes)) { $output = exporter_csv_ligne($entetes, $delim, $importer_charset); } // on passe par un fichier temporaire qui permet de ne pas saturer la memoire // avec les gros exports $fichier = sous_repertoire(_DIR_CACHE, 'export') . $filename; $fp = fopen($fichier, 'w'); $length = fwrite($fp, $output); while ($row = is_array($resource) ? array_shift($resource) : sql_fetch($resource)) { $output = exporter_csv_ligne($row, $delim, $importer_charset); $length += fwrite($fp, $output); } fclose($fp); if ($envoyer) { header("Content-Type: text/comma-separated-values; charset=$charset"); header("Content-Disposition: attachment; filename=$filename"); //non supporte //Header("Content-Type: text/plain; charset=$charset"); header("Content-Length: $length"); ob_clean(); flush(); readfile($fichier); } return $fichier; }
/home/atelierpru/provence/6bf95/../ecrire/inc/exporter_csv.php