/spip/ecrire/typographie/fr.php
PHP | 73 lines | 51 code | 10 blank | 12 comment | 2 complexity | e305aa57feb33de88f7c498b912d25d9 MD5 | raw file
Possible License(s): LGPL-2.1, GPL-3.0
- <?php
- /***************************************************************************\
- * SPIP, Systeme de publication pour l'internet *
- * *
- * Copyright (c) 2001-2011 *
- * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
- * *
- * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
- * Pour plus de details 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 = array(
- "'" => "’",
- " " => "~",
- "»" => "»",
- "«" => "«",
- "”" => "”",
- "“" => "“",
- "°" => "°"
- );
- $chars = array(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 = array(
- /* 1 */ '/((?:^|[^\#0-9a-zA-Z\&])[\#0-9a-zA-Z]*)\;/S',
- /* 2 */ '/»| --?,|(?::| %)(?:\W|$)/S',
- /* 3 */ '/([^[<(])([!?][!?\.]*)/iS',
- /* 4 */ '/«|(?:M(?:M?\.|mes?|r\.?)|[MnN]°) /S'
- );
- $remplace1 = array(
- /* 1 */ '\1~;',
- /* 2 */ '~\0',
- /* 3 */ '\1~\2',
- /* 4 */ '\0~'
- );
- $letexte = preg_replace($cherche1, $remplace1, $letexte);
- $letexte = preg_replace("/ *~+ */S", "~", $letexte);
- $cherche2 = array(
- '/([^-\n]|^)--([^-]|$)/S',
- ',(http|https|ftp|mailto)~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S',
- '/~/'
- );
- $remplace2 = array(
- '\1—\2',
- '\1\3\4',
- ' '
- );
- $letexte = preg_replace($cherche2, $remplace2, $letexte);
- return $letexte;
- }