Server : Apache System : Linux ks5.tuic.fr 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 User : pragmatice ( 1003) PHP Version : 8.2.24 Disable Function : NONE Directory : /home/pragmatice/public_html/lesite/ecrire/typographie/ |
<?php /***************************************************************************\ * SPIP, Système de publication pour l'internet * * * * Copyright © avec tendresse depuis 2001 * * Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribué sous licence GNU/GPL. * * Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) { return; } // Correction typographique francaise function typographie_fr_dist($letexte) { static $trans; // Nettoyer 160 = nbsp ; 187 = raquo ; 171 = laquo ; 176 = deg ; // 147 = ldquo; 148 = rdquo; ' = zouli apostrophe if (!$trans) { $trans = [ "'" => '’', ' ' => '~', '»' => '»', '«' => '«', '”' => '”', '“' => '“', '°' => '°' ]; $chars = [160 => '~', 187 => '»', 171 => '«', 148 => '”', 147 => '“', 176 => '°']; $chars_trans = array_keys($chars); $chars = array_values($chars); $chars_trans = implode(' ', array_map('chr', $chars_trans)); $chars_trans = unicode2charset(charset2unicode($chars_trans, 'iso-8859-1', 'forcer')); $chars_trans = explode(' ', $chars_trans); foreach ($chars as $k => $r) { $trans[$chars_trans[$k]] = $r; } } $letexte = strtr($letexte, $trans); $cherche1 = [ /* 1 */ '/((?:^|[^\#0-9a-zA-Z\&])[\#0-9a-zA-Z]*)\;/S', /* 2 */ '/»| --?,|(?::(?!:)| %)(?:\W|$)/S', /* 3 */ '/([^[<(!?.])([!?][!?\.]*)/iS', /* 4 */ '/«|(?:M(?:M?\.|mes?|r\.?)|[MnN]°) /S' ]; $remplace1 = [ /* 1 */ '\1~;', /* 2 */ '~\0', /* 3 */ '\1~\2', /* 4 */ '\0~' ]; $letexte = preg_replace($cherche1, $remplace1, $letexte); $letexte = preg_replace('/ *~+ */S', '~', $letexte); $cherche2 = [ '/([^-\n]|^)--([^-]|$)/S', ',(' . _PROTOCOLES_STD . ')~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S', '/~/' ]; $remplace2 = [ '\1—\2', '\1\3\4', ' ' ]; $letexte = preg_replace($cherche2, $remplace2, $letexte); return $letexte; }