source: spip-zone/_plugins_/couteau_suisse/outils/liens_en_clair_fonctions.php @ 31928

Last change on this file since 31928 was 31928, checked in by patfr@…, 10 years ago

Liens en clair : suivre SPIP 2.0.9
Rappel : ni les liens internes (class="spip_in"), ni le glossaire (class="spip_glossaire") ne sont pris en compte

File size: 1.1 KB
Line 
1<?php
2
3function liens_en_clair_callback($matches) {
4        if (preg_match(',^(mailto:|news:)(.*)$,', $lien = $matches[2], $matches2)) $lien = $matches2[2];
5        // si mailcrypt est actif, on decode le lien cache dans "title"
6        if (defined('_mailcrypt_AROBASE_JS') && preg_match(',title="([^"]+)'.preg_quote(_mailcrypt_AROBASE_JS).'([^"]+)",', $matches[0], $matches2)) 
7                $lien = $matches2[1]._mailcrypt_AROBASE.$matches2[2];
8        // doit-on afficher le lien en clair ?
9        $ajouter_lien = 
10                $lien!=$matches[3]
11                        // ni les ancres, ni les blocs
12                        && $lien[0]!='#'
13                        && strpos($lien, 'javascript:')===false
14                        // ni les liens internes, ni le glossaire SPIP...
15                        && !preg_match(',(["\'])spip_(in|glossaire)\1,', $matches[0]);
16        if ($ajouter_lien) return $matches[0] . " [$lien]";
17        return $matches[0];
18}
19
20// filtre utilisable sur les balises SPIP
21function liens_en_clair($texte) {
22        if (strpos($texte, 'href')===false) return $texte;
23        // recherche de tous les liens : <a href="??">
24        $texte = preg_replace_callback(',<a.* href=(["\'])(.*)\1.*>(.*)</a>,Umsi', 'liens_en_clair_callback', $texte);
25        return $texte;
26}
27
28?>
Note: See TracBrowser for help on using the repository browser.