1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- /***************************************************************************\
- * SPIP, Systeme de publication pour l'internet *
- * *
- * Copyright (c) 2001-2014 *
- * 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($t) {
- static $trans;
- if (!isset($trans)) {
- $trans = array(
- " " => '~',
- "»" => '»',
- "«" => '«',
- "”" => '”',
- "“" => '“',
- "°" => '°',
- "'" => '’'
- );
- switch ($GLOBALS['meta']['charset']) {
- case 'utf-8':
- $trans["\xc2\xa0"] = '~';
- $trans["\xc2\xbb"] = '»';
- $trans["\xc2\xab"] = '«';
- $trans["\xe2\x80\x94"] = '--';
- $trans["\xe2\x80\x9d"] = '”';
- $trans["\xe2\x80\x9c"] = '“';
- $trans["\xc2\xb0"] = '°';
- $trans["\xe2\x80\x89"] = '~'; # &finesp;
- break;
- default:
- $trans["\xa0"] = '~';
- $trans["\xab"] = '«';
- $trans["\xbb"] = '»';
- $trans["\xb0"] = '°';
- break;
- }
- }
- # cette chaine ne peut pas exister,
- # cf. TYPO_PROTECTEUR dans inc/texte
- $pro = "-\x2-";
- $t = str_replace(array_keys($trans), array_values($trans), $t);
- # la typo du ; risque de clasher avec les entites &xxx;
- if (strpos($t, ';') !== false) {
- $t = str_replace(';', '~;', $t);
- $t = preg_replace(',(&#?[0-9a-z]+)~;,iS', '$1;', $t);
- }
- /* 2 ; ajout d'insecable */
- $t = preg_replace('/»| --?,|(?::| %)(?:\W|$)/S', '~$0', $t);
- // {»} guillemet en italiques : ne pas doubler l'insecable
- $t = str_replace('~{~', '~{', $t);
- $t = str_replace('~}~', '}~', $t);
- /* 3 */
- $t = preg_replace('/[!?][!?\.]*/S', "$pro~$0", $t, -1, $c);
- if ($c) {
- $t = preg_replace("/([\[<\(!\?\.])$pro~/S", '$1', $t);
- $t = str_replace("$pro", '', $t);
- }
- /* 4 */
- $t = preg_replace('/«|M(?:M?\.|mes?|r\.?|°) |[nN]° /S', '$0~', $t);
- if (strpos($t, '~') !== false)
- $t = preg_replace("/ *~+ */S", "~", $t);
- $t = preg_replace("/--([^-]|$)/S", "$pro—$1", $t, -1, $c);
- if ($c) {
- $t = preg_replace("/([-\n])$pro—/S", "$1--", $t);
- $t = str_replace($pro, '', $t);
- }
- $t = preg_replace(',(' ._PROTOCOLES_STD . ')~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S', '$1$3$4', $t);
- $t = str_replace('~', ' ', $t);
- return $t;
- }
|