Skip to content
Extraits de code Groupes Projets
Valider 4fadc24f rédigé par cerdic's avatar cerdic
Parcourir les fichiers

#1012 ne pas transformer les entites de <code>...</code>

parent e220e686
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -293,9 +293,13 @@ function corriger_toutes_entites_html($texte) { ...@@ -293,9 +293,13 @@ function corriger_toutes_entites_html($texte) {
return preg_replace(',&amp;(#?[a-z0-9]+;),iS', '&\1', $texte); return preg_replace(',&amp;(#?[a-z0-9]+;),iS', '&\1', $texte);
} }
function proteger_amp($texte){
return str_replace('&','&amp;',$texte);
}
// http://doc.spip.org/@entites_html // http://doc.spip.org/@entites_html
function entites_html($texte, $tout=false) { function entites_html($texte, $tout=false) {
$texte = htmlspecialchars($texte); include_spip("inc/texte");
$texte = htmlspecialchars(echappe_retour(echappe_html($texte,'',true),'','proteger_amp'));
if ($tout) if ($tout)
return corriger_toutes_entites_html($texte); return corriger_toutes_entites_html($texte);
else else
......
...@@ -121,7 +121,7 @@ function traiter_echap_html_dist($regs) { ...@@ -121,7 +121,7 @@ function traiter_echap_html_dist($regs) {
// Echapper les <code>...</ code> // Echapper les <code>...</ code>
// http://doc.spip.org/@traiter_echap_code_dist // http://doc.spip.org/@traiter_echap_code_dist
function traiter_echap_code_dist($regs) { function traiter_echap_code_dist($regs) {
$echap = entites_html($regs[3]); $echap = htmlspecialchars($regs[3]); // il ne faut pas passer dans entites_html, ne pas transformer les &#xxx; du code !
// ne pas mettre le <div...> s'il n'y a qu'une ligne // ne pas mettre le <div...> s'il n'y a qu'une ligne
if (is_int(strpos($echap,"\n"))) { if (is_int(strpos($echap,"\n"))) {
...@@ -223,7 +223,7 @@ $preg='') { ...@@ -223,7 +223,7 @@ $preg='') {
// par propre() : exemple dans ecrire/inc_articles_ortho.php, $source='ORTHO' // par propre() : exemple dans ecrire/inc_articles_ortho.php, $source='ORTHO'
// ou encore dans typo() // ou encore dans typo()
// http://doc.spip.org/@echappe_retour // http://doc.spip.org/@echappe_retour
function echappe_retour($letexte, $source='') { function echappe_retour($letexte, $source='', $filtre = "") {
if (strpos($letexte,"base64$source")) { if (strpos($letexte,"base64$source")) {
# spip_log(htmlspecialchars($letexte)); ## pour les curieux # spip_log(htmlspecialchars($letexte)); ## pour les curieux
if (preg_match_all( if (preg_match_all(
...@@ -231,6 +231,7 @@ function echappe_retour($letexte, $source='') { ...@@ -231,6 +231,7 @@ function echappe_retour($letexte, $source='') {
$letexte, $regs, PREG_SET_ORDER)) { $letexte, $regs, PREG_SET_ORDER)) {
foreach ($regs as $reg) { foreach ($regs as $reg) {
$rempl = base64_decode(extraire_attribut($reg[0], 'title')); $rempl = base64_decode(extraire_attribut($reg[0], 'title'));
if ($filtre) $rempl = $filtre($rempl);
$letexte = str_replace($reg[0], $rempl, $letexte); $letexte = str_replace($reg[0], $rempl, $letexte);
} }
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter