Newer
Older
//
// Ce fichier ne sera execute qu'une fois
if (defined("_ECRIRE_INC_TEXTE")) return;
define("_ECRIRE_INC_TEXTE", "1");
//
// Initialisation de quelques variables globales
// (on peut les modifier globalement dans mes_fonctions.php3,
// OU individuellement pour chaque type de page dans article.php3,
// rubrique.php3, etc. cf doc...)
// Par securite ne pas accepter les variables passees par l'utilisateur
function tester_variable($nom_var, $val){
OR $_GET[$nom_var] OR $GLOBALS['HTTP_GET_VARS'][$nom_var]
OR $_PUT[$nom_var] OR $GLOBALS['HTTP_PUT_VARS'][$nom_var]
OR $_POST[$nom_var] OR $GLOBALS['HTTP_POST_VARS'][$nom_var]
OR $_COOKIE[$nom_var] OR $GLOBALS['HTTP_COOKIE_VARS'][$nom_var]
$GLOBALS[$nom_var] = $val;
tester_variable('debut_intertitre', "\n<h3 class=\"spip\">");
tester_variable('fin_intertitre', "</h3>\n");
tester_variable('ligne_horizontale', "\n<hr class=\"spip\" />\n");
tester_variable('ouvre_ref', ' [');
tester_variable('ferme_ref', ']');
tester_variable('ouvre_note', '[');
tester_variable('ferme_note', '] ');
tester_variable('les_notes', '');
tester_variable('compt_note', 0);
tester_variable('nombre_surligne', 4);
tester_variable('url_glossaire_externe', "http://@lang@.wikipedia.org/wiki/");
// On ne prend la $puce_rtl par defaut que si $puce n'a pas ete redefinie
//if (!tester_variable('puce', "<li class='spip_puce' style='list-style-image: url(puce.gif)'>")) {
if (!tester_variable('puce', "<img class='spip_puce' src='puce.gif' alt='-'> ")) {
tester_variable('puce_rtl', "<img class='spip_puce' src='puce_rtl.gif' alt='-'> ");
$lang2 = strtoupper($GLOBALS['spip_lang']);
setlocale(LC_CTYPE, $GLOBALS['spip_lang']) ||
setlocale(LC_CTYPE, $lang2.'_'.$GLOBALS['spip_lang']) ||
setlocale(LC_CTYPE, $GLOBALS['spip_lang'].'_'.$lang2);
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//
// Vignette pour les documents lies
//
function vignette_par_defaut($type_extension) {
if ($GLOBALS['flag_ecrire'])
$img = "../IMG/icones";
else
$img = "IMG/icones";
$filename = "$img/$type_extension";
// Glurps !
if (file_exists($filename.'.png')) {
$vig = "$filename.png";
}
else if (file_exists($filename.'.gif')) {
$vig = "$filename.gif";
}
else if (file_exists($filename.'-dist.png')) {
$vig = "$filename-dist.png";
}
else if (file_exists($filename.'-dist.gif')) {
$vig = "$filename-dist.gif";
}
else if (file_exists("$img/defaut.png")) {
$vig = "$img/defaut.png";
}
else if (file_exists("$img/defaut.gif")) {
$vig = "$img/defaut.gif";
}
else if (file_exists("$img/defaut-dist.png")) {
$vig = "$img/defaut-dist.png";
}
else if (file_exists("$img/defaut-dist.gif")) {
$vig = "$img/defaut-dist.gif";
}
if ($size = @getimagesize($vig)) {
$largeur = $size[0];
$hauteur = $size[1];
}
return array($vig, $largeur, $hauteur);
}
// Diverses fonctions essentielles
// ereg_ ou preg_ ?
function ereg_remplace($cherche_tableau, $remplace_tableau, $texte) {
if ($flag_pcre) return preg_replace($cherche_tableau, $remplace_tableau, $texte);
$n = count($cherche_tableau);
for ($i = 0; $i < $n; $i++) {
$texte = ereg_replace(substr($cherche_tableau[$i], 1, -1), $remplace_tableau[$i], $texte);
return $texte;
// Ne pas afficher le chapo si article virtuel
function nettoyer_chapo($chapo){
if (substr($chapo,0,1) == "="){
// Mise de cote des echappements
function echappe_html($letexte,$source) {
if ($flag_pcre) { // beaucoup plus rapide si on a pcre
$regexp_echap_html = "<html>((.*?))<\/html>";
$regexp_echap_code = "<code>((.*?))<\/code>";
$regexp_echap_cadre = "<cadre>((.*?))<\/cadre>";
$regexp_echap = "/($regexp_echap_html)|($regexp_echap_code)|($regexp_echap_cadre)/si";
} else {
$regexp_echap_html = "<html>(([^<]|<[^/]|</[^h]|</h[^t]|</ht[^m]|</htm[^l]|<\/html[^>])*)<\/html>";
$regexp_echap_code = "<code>(([^<]|<[^/]|</[^c]|</c[^o]|</co[^d]|</cod[^e]|<\/code[^>])*)<\/code>";
$regexp_echap_cadre = "<cadre>(([^<]|<[^/]|</[^c]|</c[^a]|</ca[^d]|</cad[^r]|</cadr[^e]|<\/cadre[^>])*)<\/cadre>";
$regexp_echap = "($regexp_echap_html)|($regexp_echap_code)|($regexp_echap_cadre)";
}
while (($flag_pcre && preg_match($regexp_echap, $letexte, $regs))
|| (!$flag_pcre && eregi($regexp_echap, $letexte, $regs))) {
$num_echap++;
// Echapper les <html>...</ html>
$les_echap[$num_echap] = $regs[2];
}
else
// Echapper les <code>...</ code>
$lecode = entites_html($regs[5]);
// supprimer les sauts de ligne debut/fin (mais pas les espaces => ascii art).
$lecode = ereg_replace("^\n+|\n+$", "", $lecode);
// ne pas mettre le <div...> s'il n'y a qu'une ligne
if (is_int(strpos($lecode,"\n")))
$lecode = nl2br("<div align='left' class='spip_code'>".$lecode."</div>");
$lecode = ereg_replace("\t", " ", $lecode);
$lecode = ereg_replace(" ", " ", $lecode);
$les_echap[$num_echap] = "<tt>".$lecode."</tt>";
}
else
// Echapper les <cadre>...</cadre>
$lecode = trim(entites_html($regs[8]));
$total_lignes = count(explode("\n", $lecode));
$les_echap[$num_echap] = "<form><textarea cols='50' style='width: 100%;' rows='$total_lignes' wrap='off' class='spip_cadre'>".$lecode."</textarea></form>";
$pos = strpos($letexte, $regs[0]);
.substr($letexte,$pos+strlen($regs[0]));
//
// Insertion d'images et de documents utilisateur
//
while (eregi("<(IMG|DOC|EMB)([0-9]+)(\|([^\>]*))?".">", $letexte, $match)) {
include_ecrire("inc_documents.php3");
$num_echap++;
$letout = quotemeta($match[0]);
$letout = ereg_replace("\|", "\|", $letout);
$id_document = $match[2];
$align = $match[4];
if (eregi("emb", $match[1]))
$rempl = embed_document($id_document, $align);
else
$rempl = integre_image($id_document, $align, $match[1]);
$letexte = ereg_replace($letout, $rempl, $letexte);
$les_echap[$num_echap] = $rempl;
}
//
// Echapper les <a href>
//
//$regexp_echap = "<a[[:space:]][^>]+>";
$regexp_echap = "<[^>]+>"; // Echappement tout HTML
while (eregi($regexp_echap, $letexte, $regs)) {
$num_echap++;
$les_echap[$num_echap] = $regs[0];
$pos = strpos($letexte, $les_echap[$num_echap]);
.substr($letexte,$pos+strlen($les_echap[$num_echap]));
return array($letexte, $les_echap);
// Traitement final des echappements
function echappe_retour($letexte, $les_echap, $source) {
$lenum = $match[1];
$cherche = $match[0];
$pos = strpos($letexte, $cherche);
$letexte = substr($letexte, 0, $pos). $les_echap[$lenum] . substr($letexte, $pos + strlen($cherche));
function couper($texte, $long) {
$texte2 = substr($texte, 0, $long * 2); /* heuristique pour prendre seulement le necessaire */
if (strlen($texte2) < strlen($texte)) $plus_petit = true;
$texte = ereg_replace("\[([^\[]*)->([^]]*)\]","\\1", $texte2);
// supprimer les notes
$texte = ereg_replace("\[\[([^]]|\][^]])*\]\]", "", $texte);
// supprimer les codes typos
$texte = ereg_replace("[{}]", "", $texte);
$texte2 = substr($texte, 0, $long);
$texte2 = ereg_replace("([^[:space:]][[:space:]]+)[^[:space:]]*$", "\\1", $texte2);
if ((strlen($texte2) + 3) < strlen($texte)) $plus_petit = true;
if ($plus_petit) $texte2 .= ' (...)';
return $texte2;
// prendre <intro>...</intro> sinon couper a la longueur demandee
function couper_intro($texte, $long) {
$texte = eregi_replace("(</?)intro>", "\\1intro>", $texte); // minuscules
while ($fin = strpos($texte, "</intro>")) {
$zone = substr($texte, 0, $fin);
$texte = substr($texte, $fin + strlen("</intro>"));
if ($deb = strpos($zone, "<intro>") OR substr($zone, 0, 7) == "<intro>")
$zone = substr($zone, $deb + 7);
$intro .= $zone;
}
if ($intro)
$intro = $intro.' (...)';
else
$intro = couper($texte, $long);
// supprimer un eventuel chapo redirecteur =http:/.....
$intro = ereg_replace("^=[^[:space:]]+","",$intro);
// Les elements de propre()
// Securite : empecher l'execution de code PHP
function interdire_scripts($source) {
$source = eregi_replace("<(\%|\?|([[:space:]]*)script)", "<\\1", $source);
return $source;
Antoine Pitrou
a validé
// Correction typographique francaise
// Nettoyer 160 = nbsp ; 187 = raquo ; 171 = laquo ; 176 = deg ; 147 = ldquo; 148 = rdquo
if (!$trans) {
$trans = array(
" " => "~",
"»" => "»",
"«" => "«",
"”" => "”",
"“" => "“",
$chars = array(160 => '~', 187 => '»', 171 => '«', 148 => '”', 147 => '“', 176 => '°');
$charset = lire_meta('charset');
include_ecrire('inc_charsets.php3');
while (list($c, $r) = each($chars)) {
$c = unicode2charset(charset2unicode(chr($c), 'iso-8859-1', 'forcer'));
$trans[$c] = $r;
}
if ($flag_strtr2)
$letexte = strtr($letexte, $trans);
else {
reset($trans);
while (list($c, $r) = each($trans))
$letexte = str_replace($c, $r, $letexte);
}
$cherche1 = array(
/* 2 */ '/((^|[^\#0-9a-zA-Z\&])[\#0-9a-zA-Z]*)\;/',
/* 3 */ '/»|[!?]| -,|:([^0-9]|$)/',
/* 4 */ '/«|(M(M?\.|mes?|r\.?)|[MnN]°) /'
/* 3 */ '~\0',
/* 4 */ '\0~'
);
$letexte = ereg_remplace($cherche1, $remplace1, $letexte);
$letexte = ereg_replace(" *~+ *", "~", $letexte);
$cherche2 = array(
'/(http|https|ftp|mailto)~:/',
'/~/'
);
$remplace2 = array(
'\1:',
' '
);
$letexte = ereg_remplace($cherche2, $remplace2, $letexte);
// rien sauf les ~
function typo_en($letexte) {
return ereg_replace(" *~+ *", " ", $letexte);
}
// Typographie generale : francaise si la langue est 'cpf', 'fr' ou 'eo',
// sinon anglaise (minimaliste)
global $spip_lang, $lang_typo;
list($letexte, $les_echap) = echappe_html($letexte, "SOURCETYPO");
if (!$typo = $lang_typo) {
include_ecrire('inc_lang.php3');
$typo = lang_typo($spip_lang);
if ($typo == 'fr')
else
$letexte = typo_en($letexte);
$letexte = ereg_replace("'", "’", $letexte);
$letexte = corriger_caracteres($letexte);
$letexte = echappe_retour($letexte, $les_echap, "SOURCETYPO");
return $letexte;
}
// cette fonction est tordue : on lui passe un tableau correspondant au match
// de la regexp ci-dessous, et elle retourne le texte a inserer a la place
// et le lien "brut" a usage eventuel de redirection...
function extraire_lien ($regs) {
if (ereg('^(art(icle)?|rub(rique)?|br(.ve)?|aut(eur)?|mot|site|doc(ument)?|im(age|g))? *([[:digit:]]+)$', $lien_url, $match)) {
if (file_exists('inc-urls.php3')) {
include_local('inc-urls.php3');
} elseif (file_exists('inc-urls-dist.php3')) {
include_local('inc-urls-dist.php3');
} else {
include_ecrire('inc_urls.php3');
}
$id_lien = $match[8];
$type_lien = $match[1];
$lien_interne=true;
$class_lien = "in";
switch (substr($type_lien, 0, 2)) {
case 'ru':
$lien_url = generer_url_rubrique($id_lien);
if (!$lien_texte) {
$req = "select titre from spip_rubriques where id_rubrique=$id_lien";
$row = @spip_fetch_array(@spip_query($req));
$lien_texte = $row['titre'];
}
break;
case 'br':
$lien_url = generer_url_breve($id_lien);
if (!$lien_texte) {
$req = "select titre from spip_breves where id_breve=$id_lien";
$row = @spip_fetch_array(@spip_query($req));
$lien_texte = $row['titre'];
}
break;
case 'au':
$lien_url = generer_url_auteur($id_lien);
if (!$lien_texte) {
$req = "select nom from spip_auteurs where id_auteur = $id_lien";
$row = @spip_fetch_array(@spip_query($req));
$lien_texte = $row['nom'];
}
break;
case 'mo':
$lien_url = generer_url_mot($id_lien);
if (!$lien_texte) {
$req = "select titre from spip_mots where id_mot=$id_lien";
$row = @spip_fetch_array(@spip_query($req));
case 'im':
case 'do':
$lien_url = generer_url_document($id_lien);
if (!$lien_texte) {
$req = "select titre,fichier from spip_documents where id_document=$id_lien";
$row = @spip_fetch_array(@spip_query($req));
$lien_texte = $row['titre'];
if (!$lien_texte)
$lien_texte = ereg_replace("^.*/","",$row['fichier']);
}
$row = @spip_fetch_array(@spip_query("SELECT nom_site,url_site FROM spip_syndic WHERE id_syndic=$id_lien"));
if ($row) {
$lien_url = $row['url_site'];
if (!$lien_texte)
$lien_texte = typo($row['nom_site']);
}
break;
default:
$lien_url = generer_url_article($id_lien);
if (!$lien_texte) {
$req = "select titre from spip_articles where id_article=$id_lien";
$row = @spip_fetch_array(@spip_query($req));
// supprimer les numeros des titres
include_ecrire("inc_filtres.php3");
$lien_texte = supprimer_numero($lien_texte);
}
else if (ereg('^\?(.*)$', $lien_url, $regs)) {
// Liens glossaire
$lien_url = substr($lien_url, 1);
$class_lien = "glossaire";
}
else {
// Liens non automatiques
$class_lien = "out";
// texte vide ?
if ((!$lien_texte) and (!$lien_interne)) {
$lien_texte = ereg_replace('"', '', $lien_url);
if (strlen($lien_texte)>40)
$lien_texte = substr($lien_texte,0,35).'...';
$class_lien = "url";
Fil
a validé
$lien_texte = "<html>$lien_texte</html>";
}
// petites corrections d'URL
if (ereg("^www\.[^@]+$",$lien_url))
$lien_url = "http://".$lien_url;
else if (strpos($lien_url, "@") && email_valide($lien_url))
$lien_url = "mailto:".$lien_url;
// Traitement des listes (merci a Michael Parienti)
//
function traiter_listes ($texte) {
$parags = split ("\n[[:space:]]*\n", $texte);
unset($texte);
// chaque paragraphe est traite a part
while (list(,$para) = each($parags)) {
$niveau = 0;
$lignes = explode("\n-", "\n" . $para);
// ne pas toucher a la premiere ligne
list(,$debut) = each($lignes);
$texte .= $debut;
// chaque item a sa profondeur = nb d'etoiles
unset ($type);
while (list(,$item) = each($lignes)) {
$profond = strlen($regs[1]);
if ($profond > 0) {
unset ($ajout);
// changement de type de liste au meme niveau : il faut
// descendre un niveau plus bas, fermer ce niveau, et
// remonter
$nouv_type = (substr($item,0,1) == '*') ? 'ul' : 'ol';
$change_type = ($type AND ($type <> $nouv_type) AND ($profond == $niveau)) ? 1 : 0;
$type = $nouv_type;
// d'abord traiter les descentes
while ($niveau > $profond - $change_type) {
$ajout .= $pile_li[$niveau];
$ajout .= $pile_type[$niveau];
// puis les identites (y compris en fin de descente)
if ($niveau == $profond && !$change_type) {
}
// puis les montees (y compris apres une descente un cran trop bas)
while ($niveau < $profond) {
$niveau ++;
$ajout .= "<$type class=\"spip\">";
$pile_type[$niveau] = "</$type>";
}
$ajout .= "<li class=\"spip\">";
$pile_li[$profond] = "</li>";
Fil
a validé
$ajout = "\n-"; // puce normale ou <hr>
Fil
a validé
$texte .= $ajout . $regs[2];
}
// retour sur terre
unset ($ajout);
while ($niveau > 0) {
$ajout .= $pile_li[$niveau];
$ajout .= $pile_type[$niveau];
$niveau --;
}
$texte .= $ajout;
// paragraphe
$texte .= "\n\n";
}
// sucrer les deux derniers \n
return substr($texte, 0, -2);
}
// Nettoie un texte, traite les raccourcis spip, la typo, etc.
function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = 'oui') {
global $debut_intertitre, $fin_intertitre, $ligne_horizontale, $url_glossaire_externe;
global $marqueur_notes;
global $ouvre_ref;
global $ferme_ref;
global $ouvre_note;
global $ferme_note;
if ($lang_dir == 'rtl' AND $GLOBALS['puce_rtl']) $puce = $GLOBALS['puce_rtl'];
else $puce = $GLOBALS['puce'];
// Harmoniser les retours chariot
$letexte = ereg_replace ("\r\n?", "\n",$letexte);
// echapper les <a href>, <html>...< /html>, <code>...< /code>
if (!$les_echap)
list($letexte, $les_echap) = echappe_html($letexte, "SOURCEPROPRE");
// Corriger HTML
$letexte = eregi_replace("</?p>","\n\n\n",$letexte);
//
// Notes de bas de page
//
$regexp = "\[\[(([^]]|[^]]\][^]])*)\]\]";
/* signifie : deux crochets ouvrants, puis pas-crochet-fermant ou
crochet-fermant entoure de pas-crochets-fermants (c'est-a-dire
tout sauf deux crochets fermants), puis deux fermants */
if (ereg("^ *<([^>]*)>", $note_texte, $regs)){
$num_note = $regs[1];
$note_texte = ereg_replace ("^ *<([^>]*)>", "", $note_texte);
$mn = $marqueur_notes.'-';
$ancre = $mn.urlencode($num_note);
$insert = "$ouvre_ref<a href='#nb$ancre' name='nh$ancre' class='spip_note'>$num_note</a>$ferme_ref";
$appel = "<html>$ouvre_note<a href='#nh$ancre' name='nb$ancre' class='spip_note'>$num_note</a>$ferme_note</html>";
// l'ajouter "brut" dans les notes
if ($note_texte) {
if ($mes_notes)
$mes_notes .= "\n\n";
$mes_notes .= $appel . $note_texte;
}
// dans le texte, mettre l'appel de note a la place de la note
$pos = strpos($texte_a_voir, $note_source);
$texte_a_voir = substr($texte_a_voir, $pos + strlen($note_source));
//
// Raccourcis automatiques vers un glossaire
// (on traite ce raccourci en deux temps afin de ne pas appliquer
// la typo sur les URLs, voir raccourcis liens ci-dessous)
//
if ($url_glossaire_externe) {
$regexp = "\[\?+([^][<>]+)\]";
while (ereg($regexp, $letexte, $regs)) {
$terme = trim($regs[1]);
$terme_underscore = urlencode(ereg_replace('[[:space:]]+', '_', $terme));
if (strstr($url_glossaire_externe,"%s"))
$url = str_replace("%s", $terme_underscore, $url_glossaire_externe);
else
$url = $url_glossaire_externe.$terme_underscore;
$url = str_replace("@lang@", $GLOBALS['spip_lang'], $url);
$code = "[$terme->?$url]";
$letexte = str_replace($regs[0], $code, $letexte);
}
}
$regexp = "\[([^][]*)->(>?)([^]]*)\]";
$pos = strpos($texte_a_voir, $regs[0]);
$texte_vu .= typo(substr($texte_a_voir, 0, $pos)) . $insert;
$texte_a_voir = substr($texte_a_voir, $pos + strlen($regs[0]));
}
$letexte = $texte_vu.typo($texte_a_voir); // typo de la queue du texte
//
// Tableaux
//
$letexte = ereg_replace("^\n?\|", "\n\n|", $letexte);
$letexte = ereg_replace("\|\n?$", "|\n\n", $letexte);
$tableBeginPos = strpos($letexte, "\n\n|");
$tableEndPos = strpos($letexte, "|\n\n");
while (is_integer($tableBeginPos) && is_integer($tableEndPos) && $tableBeginPos < $tableEndPos + 3) {
$textBegin = substr($letexte, 0, $tableBeginPos);
$textTable = substr($letexte, $tableBeginPos + 2, $tableEndPos - $tableBeginPos);
$textEnd = substr($letexte, $tableEndPos + 3);
$newTextTable = "\n<p><table class=\"spip\">";
$rowId = 0;
$lineEnd = strpos($textTable, "|\n");
while (is_integer($lineEnd)) {
$rowId++;
$row = substr($textTable, 0, $lineEnd);
$textTable = substr($textTable, $lineEnd + 2);
if ($rowId == 1 && ereg("^(\\|[[:space:]]*\\{\\{[^}]+\\}\\}[[:space:]]*)+$", $row)) {
$newTextTable .= '<tr class="row_first">';
} else {
$newTextTable .= '<tr class="row_'.($rowId % 2 ? 'odd' : 'even').'">';
}
$newTextTable .= ereg_replace("\|([^\|]+)", "<td>\\1</td>", $row);
$newTextTable .= '</tr>';
$lineEnd = strpos($textTable, "|\n");
}
$newTextTable .= "</table>\n<p>\n";
$letexte = $textBegin . $newTextTable . $textEnd;
$tableBeginPos = strpos($letexte, "\n\n|");
$tableEndPos = strpos($letexte, "|\n\n");
}
//
// Ensemble de remplacements implementant le systeme de mise
// en forme (paragraphes, raccourcis...)
//
// ATTENTION : si vous modifiez cette partie, modifiez les DEUX
// branches de l'alternative (if (!flag_pcre).../else).
// les listes
if (ereg("\n-[*#]", "\n".$letexte))
$letexte = traiter_listes($letexte);
// autres raccourcis
/* note : on pourrait se passer de cette branche, car ereg_remplace() fonctionne
sans pcre ; toutefois les elements ci-dessous sont un peu optimises (str_replace
est plus rapide que ereg_replace), donc laissons les deux branches cohabiter, ca
permet de gagner un peu de temps chez les hergeurs nazes */
$letexte = ereg_replace("(^|\n)(-{4,}|_{4,})", "@@SPIP_ligne_horizontale@@", $letexte);
$letexte = ereg_replace("^- *", "$puce ", $letexte);
$letexte = ereg_replace("\n-- *", "\n<br />&mdash ",$letexte);
$letexte = ereg_replace("\n- *", "\n<br />$puce ",$letexte);
$letexte = ereg_replace("\n_ +", "\n<br />",$letexte);
$letexte = ereg_replace("(( *)\n){2,}", "\n<p>", $letexte);
$letexte = str_replace("{{{", "@@SPIP_debut_intertitre@@", $letexte);
$letexte = str_replace("}}}", "@@SPIP_fin_intertitre@@", $letexte);
$letexte = str_replace("{{", "<b class=\"spip\">", $letexte);
$letexte = str_replace("}}", "</b>", $letexte);
$letexte = str_replace("{", "<i class=\"spip\">", $letexte);
$letexte = str_replace("}", "</i>", $letexte);
$letexte = eregi_replace("(<br[[:space:]]*/?".">)+(<p>|<br[[:space:]]*/?".">)", "\n<p class=\"spip\">", $letexte);
$letexte = str_replace("<p>", "<p class=\"spip\">", $letexte);
$letexte = str_replace("\n", " ", $letexte);
$letexte = str_replace("<quote>", "<div class='spip_quote'>", $letexte);
$letexte = str_replace("<\/quote>", "</div'>", $letexte);
/* 3 */ "/\n_ +/",
/* 4 */ "/(( *)\n){2,}/",
/* 5 */ "/\{\{\{/",
/* 6 */ "/\}\}\}/",
/* 7 */ "/\{\{/",
/* 8 */ "/\}\}/",
/* 9 */ "/\{/",
/* 10 */ "/\}/",
/* 11 */ "/(<br[[:space:]]*\/?".">){2,}/",
/* 12 */ "/<p>([\n]*)(<br[[:space:]]*\/?".">)+/",
/* 13 */ "/<p>/",
/* 14 */ "/\n/",
/* 16 */ "/<quote>/",
/* 16 */ "/<\/quote>/"
/* 1 */ "$puce ",
/* 2 */ "\n<br />$puce ",
/* 3 */ "\n<br />",
/* 5 */ "@@SPIP_debut_intertitre@@",
/* 6 */ "@@SPIP_fin_intertitre@@",
/* 7 */ "<b class=\"spip\">",
/* 8 */ "</b>",
/* 9 */ "<i class=\"spip\">",
/* 10 */ "</i>",
/* 11 */ "\n<p class=\"spip\">",
/* 12 */ "\n<p class=\"spip\">",
/* 13 */ "<p class=\"spip\">",
/* 14 */ " ",
/* 15 */ "<div class=\"spip_quote\">",
/* 16 */ "</div>"
);
$letexte = ereg_remplace($cherche1, $remplace1, $letexte);
}
if (strpos(' '.$letexte, '<p class="spip">'))
$letexte = '<p class="spip">'.str_replace('<p class="spip">', "</p>\n".'<p class="spip">', $letexte).'</p>';
$letexte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre@@', $debut_intertitre, $letexte);
$letexte = ereg_replace('@@SPIP_fin_intertitre@@[[:space:]]*(</p>)?', $fin_intertitre, $letexte);
$letexte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_ligne_horizontale@@[[:space:]]*(</p>)?', $ligne_horizontale, $letexte);
// Reinserer les echappements
$letexte = echappe_retour($letexte, $les_echap, "SOURCEPROPRE");
$mes_notes = traiter_raccourcis($mes_notes, $les_echap, 'non');
if (ereg('<p class="spip">',$mes_notes))
$mes_notes = ereg_replace('<p class="spip">', '<p class="spip_note">', $mes_notes);
else
$mes_notes = '<p class="spip_note">'.$mes_notes."</p>\n";
$mes_notes = echappe_retour($mes_notes, $les_echap, "SOURCEPROPRE");
$les_notes .= interdire_scripts($mes_notes);
// Filtre a appliquer aux champs du type #TEXTE*
function propre($letexte) {
return interdire_scripts(traiter_raccourcis(trim($letexte)));
}
?>