source: spip-zone/_plugins_/typo_guillemets/typo_guillemets_fonctions.php @ 96657

Last change on this file since 96657 was 96657, checked in by real3t@…, 5 years ago

Compatibilité PHP7

si un spécialiste peut relire ce commit, ça me rassurera ;-)

File size: 4.4 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5function typo_guillemets_insert_head_css($flux) {
6        $flux .= '<link rel="stylesheet" type="text/css" href="'.find_in_path('css/typo_guillemets.css').'" media="all" />'."\n";
7        return $flux;
8}
9
10/*
11Fichier de formatage typographique des guillemets, par Vincent Ramos
12<spip_dev AD kailaasa PVNCTVM net>, sous licence GNU/GPL.
13
14Ne sont touchees que les paires de guillemets.
15
16Le formatage des guillemets est tire de
17<http://en.wikipedia.org/wiki/Quotation_mark%2C_non-English_usage>
18Certains des usages indiques ne correspondent pas a ceux que la
19barre d'insertion de caracteres speciaux de SPIP propose.
20
21Les variables suivies du commentaire LRTEUIN sont confirmees par le
22_Lexique des regles typographiques en usage a l'Imprimerie nationale_.
23
24Les variables entierement commentees sont celles pour lesquelles
25aucune information n'a ete trouvee. Par defaut, les guillements sont alors
26de la forme &ldquo;mot&rdquo;, sauf si la barre d'insertion de SPIP proposait
27deja une autre forme.
28*/
29function typo_guillemets_remplacements($texte) {
30
31        // si le texte ne contient pas de guill droit
32        // ou s'il contient deja des guillemets élaborés
33        // on ne touche pas
34        if ((strpos($texte, '"') === false)
35        OR (strpos($texte, '&#171;') !== false)
36        OR (strpos($texte, '&#187;') !== false)
37        OR (strpos($texte, '&#8220;') !== false)
38        OR (strpos($texte, '&#8221;') !== false)
39        )
40                return $texte;
41
42        switch ($GLOBALS['spip_lang']){
43                case 'fr':
44                        $guilles="&laquo;&nbsp;$2&nbsp;&raquo;"; //LRTEUIN
45                break;
46//              case 'ar':
47//                      $guilles="";
48//              break;
49                case 'bg':
50                        $guilles="&bdquo;$2&ldquo;";
51                break;
52//              case 'br':
53//                      $guilles="";
54//              break;
55//              case 'bs':
56//                      $guilles="";
57//              break;
58                case 'ca':
59                        $guilles="&laquo;$2&raquo;";
60                break;
61                case 'cpf':
62                        $guilles="&laquo;&nbsp;$2&nbsp;&raquo;";
63                break;
64//              case 'cpf_hat':
65//                      $guilles="";
66//              break;
67                case 'cs':
68                        $guilles="&bdquo;$2&ldquo;";
69                break;
70                case 'da':
71                        $guilles="&raquo;$2&laquo;";
72                break;
73                case 'de':
74                        $guilles="&bdquo;$2&ldquo;"; //ou "&raquo;$2&laquo;" // LRTEUIN
75                break;
76                case 'en':
77                        $guilles="&ldquo;$2&rdquo;"; //LRTEUIN
78                break;
79                case 'eo':
80                        $guilles="&laquo;$2&raquo;";
81                break;
82                case 'es':
83                        $guilles="&laquo;$2&raquo;";
84                break;
85//              case 'eu':
86//                      $guilles="";
87//              break;
88//              case 'fa':
89//                      $guilles="";
90//              break;
91//              case 'fon':
92//                      $guilles="";
93//              break;
94//              case 'gl':
95//                      $guilles="";
96//              break;
97                case 'hu':
98                        $guilles="&bdquo;$2&rdquo;";
99                break;
100                case 'it':
101                        $guilles="&laquo;$2&raquo;";
102                break;
103                case 'it_fem':
104                        $guilles="&laquo;$2&raquo;";
105                break;
106                case 'ja':
107                        $guilles="&#12300;$2&#12301;";
108                break;
109//              case 'lb':
110//                      $guilles="";
111//              break;
112                case 'nl':
113                        $guilles="&bdquo;$2&rdquo;";
114                break;
115//              case 'oc_auv':
116//                      $guilles="";
117//              break;
118//              case 'oc_gsc':
119//                      $guilles="";
120//              break;
121//              case 'oc_lms':
122//                      $guilles="";
123//              break;
124//              case 'oc_lnc':
125//                      $guilles="";
126//              break;
127//              case 'oc_ni':
128//                      $guilles="";
129//              break;
130//              case 'oc_ni_la':
131//                      $guilles="";
132//              break;
133//              case 'oc_prv':
134//                      $guilles="";
135//              break;
136//              case 'oc_va':
137//                      $guilles="";
138//              break;
139                case 'pl':
140                        $guilles="&bdquo;$2&rdquo;";
141                break;
142                case 'pt':
143                        $guilles="&laquo;$2&raquo;";
144                break;
145                case 'pt_br':
146                        $guilles="&laquo;$2&raquo;";
147                break;
148                case 'ro':
149                        $guilles="&bdquo;$2&rdquo;";
150                break;
151                case 'ru':
152                        $guilles="&laquo;$2&raquo;";
153                break;
154                case 'tr':
155                        $guilles="&laquo;$2&raquo;";
156                break;
157//              case 'vi':
158//                      $guilles="";
159//              break;
160                case 'zh':
161                        $guilles="&#12300;$2&#12301;"; // ou "&ldquo;$2&rdquo;" en chinois simplifie
162                break;
163                default:
164                        $guilles="&ldquo;$2&rdquo;";
165        }
166
167        // on echappe les " dans les tags ;
168        // attention ici \01 est le caractere chr(1), et $m[0] represente le tag
169        $texte = preg_replace_callback(',<[^>]*"[^>]*(>|$),msS', function($m) { return str_replace("\'", "'", str_replace('"',"\01", $m[0])); }, $texte);
170
171        // on corrige les guill restants, qui sont par definition hors des tags
172        // Un guill n'est pas pris s'il suit un caractere autre que espace, ou
173        // s'il est suivi par un caractere de mot (lettre, chiffre)
174        $texte = preg_replace('/(^|\s)"\s?([^"]*?)\s?"(\W|$)/S', '$1'.$guilles.'$3', $texte);
175
176        // et on remet les guill des tags
177        return str_replace("\01", '"', $texte);
178}
179
180?>
Note: See TracBrowser for help on using the repository browser.