' . echapper_tags($t) . ''; } // http://doc.spip.org/@filtre_text_csv_dist function filtre_text_csv_dist($t) { $virg = substr_count($t, ','); $pvirg = substr_count($t, ';'); $tab = substr_count($t, "\t"); if ($virg > $pvirg) { $sep = ','; $hs = ',';} else { $sep = ';'; $hs = ';'; $virg = $pvirg;} if ($tab > $virg) {$sep = "\t"; $hs = "\t";} $t = preg_replace('/\r?\n/', "\n", preg_replace('/[\r\n]+/', "\n", $t)); // un separateur suivi de 3 guillemets attention ! // attention au ; 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", "
", substr($cell,1,-1))), $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 0 AND preg_match("/^$sep*$/", $lignes[count($lignes)-1])) unset($lignes[count($lignes)-1]); // calcul du nombre de colonne a chaque ligne $nbcols = array(); $max = $mil = substr_count($entete, $sep); foreach($lignes as $k=>$v) { if ($max <> ($nbcols[$k]= substr_count($v, $sep))) { if ($max > $nbcols[$k]) $mil = $nbcols[$k]; else { $mil = $max; $max = $nbcols[$k];} } } // Si pas le meme nombre, cadrer au nombre max if ($mil <> $max) foreach($nbcols as $k=>$v) { if ($v < $max) $lignes[$k].= str_repeat($sep, $max-$v); } // et retirer les colonnes integralement vides while(true) { $nbcols = ($entete[strlen($entete)-1]===$sep); foreach($lignes as $v) $nbcols &= ($v[strlen($v)-1]===$sep); if (!$nbcols) break; $entete = substr($entete,0,-1); foreach($lignes as $k=>$v) $lignes[$k] = substr($v,0,-1); } $corps = join("\n", $lignes) . "\n"; $corps = $caption . "\n|{{" . str_replace($sep,'}}|{{',$entete) . "}}|" . "\n|" . str_replace($sep,'|',str_replace("\n", "|\n|",$corps)); $corps = str_replace('"#','"',$corps); include_spip('inc/texte'); return propre($corps); } // Incrustation de HTML, si on est capable de le securiser // sinon, afficher le source // http://doc.spip.org/@filtre_text_html_dist function filtre_text_html_dist($t) { if (!preg_match(',^(.*?)]*>(.*),is', $t, $r)) return appliquer_filtre($t,'text/plain'); list(,$h,$t) = $r; $style = ''; // recuperer les styles internes if (preg_match_all(',,is', $h, $r, PREG_PATTERN_ORDER)) $style = join("\n",$r[1]); // ... et externes include_spip('inc/distant'); if (preg_match_all(',]+type=.text/css[^>]*>,is', $h, $r, PREG_PATTERN_ORDER)) foreach($r[0] as $l) { preg_match("/href='([^']*)'/", str_replace('"',"'",$l), $m); $style .= "\n/* $l */\n" . str_replace('<','',recuperer_page($m[1])); } // Pourquoi SafeHtml transforme-t-il en texte les scripts dans Body ? $t = safehtml(preg_replace(',,is','',$t)); return (!$style ? '' : "\n") . $t; } // http://doc.spip.org/@filtre_audio_x_pn_realaudio function filtre_audio_x_pn_realaudio($id) { return " "; } ?>