$pvirg) { $sep = ','; $hs = ','; } else { $sep = ';'; $hs = ';'; $virg = $pvirg; } // un certain nombre de tab => le séparateur est tab if ($tab > $virg / 10) { $sep = "\t"; $hs = "\t"; } // un separateur suivi de 3 guillemets attention ! // attention au ; ou , suceptible d'etre confondu avec un separateur // on substitue un # et on remplacera a la fin $t = preg_replace("/([\n$sep])\"\"\"/", '\\1""#', $t); $t = str_replace('""', '"#', $t); preg_match_all('/"[^"]*"/', $t, $r); foreach ($r[0] as $cell) { $t = str_replace($cell, str_replace($sep, $hs, str_replace("\n", "``**``", // échapper les saut de lignes, on les remettra après. substr($cell, 1, -1))), $t); } $t = preg_replace('/\r?\n/', "\n", preg_replace('/[\r\n]+/', "\n", $t)); list($entete, $corps) = explode("\n", $t, 2); $caption = ''; // sauter la ligne de tete formee seulement de separateurs if (substr_count($entete, $sep) == strlen($entete)) { list($entete, $corps) = explode("\n", $corps, 2); } // si une seule colonne, en faire le titre if (preg_match("/^([^$sep]+)$sep+\$/", $entete, $l)) { $caption = "\n||" . $l[1] . "|"; list($entete, $corps) = explode("\n", $corps, 2); } // si premiere colonne vide, le raccourci doit quand meme produire