File "fr.php"
Full path: /home/argothem/www/v4_old/plugins-dist/textwheel/typographie/fr.php
File size: 2.8 KB
MIME-type: text/x-php
Charset: utf-8
<?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($t) {
static $trans;
if (!isset($trans)) {
$trans = [
' ' => '~',
'»' => '»',
'«' => '«',
'”' => '”',
'“' => '“',
'°' => '°',
"'" => '’'
];
$charset = $GLOBALS['meta']['charset'] ?? '';
switch ($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 */
$t = preg_replace('/»| --?,|(?::(?!:)| %)(?:\W|$)/S', '~$0', $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 = str_replace('\~', "\x1\x14", $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);
if (strpos($t, "\x1") !== false) {
$t = str_replace("\x1\x14", '~', $t);
}
return $t;
}