From be89d2a3a12089d04758ff0a0c1e02171a955bd5 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Fri, 21 Jul 2006 11:16:32 +0000
Subject: [PATCH] proteger les caracteres {}- a l'interieur des tags (attention
 c'est probablement couteux en temps)

---
 ecrire/inc/texte.php | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 99484243fd..a2d8a1e5a3 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -1141,6 +1141,21 @@ function traiter_raccourcis($letexte) {
 		$puce = definir_puce();
 	else $puce = '';
 
+
+	// Proteger les caracteres actifs a l'interieur des tags html
+	$protege = "{}-";
+	$illegal = "\x1\x2\x3";
+	if (preg_match_all(",</?[a-z!][^<>]*[!':;\?~][^<>]*>,ims",
+	$letexte, $regs, PREG_SET_ORDER)) {
+		foreach ($regs as $reg) {
+			$insert = $reg[0];
+			// hack: on transforme les caracteres a proteger en les remplacant
+			// par des caracteres "illegaux". (cf corriger_caracteres())
+			$insert = strtr($insert, $protege, $illegal);
+			$letexte = str_replace($reg[0], $insert, $letexte);
+		}
+	}
+
 	// autres raccourcis
 	$cherche1 = array(
 		/* 0 */ 	"/\n(----+|____+)/",
@@ -1179,6 +1194,8 @@ function traiter_raccourcis($letexte) {
 	$letexte = preg_replace($cherche1, $remplace1, $letexte);
 	$letexte = preg_replace("@^ <br />@", "", $letexte);
 
+	// Retablir les caracteres proteges
+	$letexte = strtr($letexte, $illegal, $protege);
 
 	// Fermer les paragraphes
 	$letexte = paragrapher($letexte);
-- 
GitLab