3 Liens orphelins - Code & integration 2007 : Patrice Vanneufville
4 Toutes les infos sur : http://www.spip-contrib.net/?article2443
7 include_spip('outils/inc_cs_liens');
9 function liens_orphelins($texte){
10 // deja, on s'en va si pas de point...
11 if ($GLOBALS["liens_orphelins"]<0 ||
strpos($texte, '.')===false
) return $texte;
12 // prudence 1 : on protege TOUTES les balises <a></a> pour eviter les doublons
13 if (strpos($texte, '<a')!==false
)
14 $texte = preg_replace_callback(',<a\s*[^<]+</a>,Ums', 'cs_liens_echappe_callback', $texte);
15 // prudence 2 : on protege TOUS les raccourcis de liens Spip, au cas ou...
16 if (strpos($texte, '[')!==false
)
17 $texte = preg_replace_callback(',\[([^][]*)->(>?)([^]]*)\],msS', 'cs_liens_echappe_callback', $texte);
18 // prudence 3 : on protege TOUTES les balises contenant des points, histoire de voir plus clair
19 if (strpos($texte, '<')!==false
)
20 $texte = preg_replace_callback(',<[^>]+\.[^>]*>,Ums', 'cs_liens_echappe_callback', $texte);
21 // encore ici, on s'en va si pas de point...
22 if (strpos($texte, '.')===false
) return echappe_retour($texte, 'LIENS');
24 // trouve et protege : protocole://qqchose
25 $texte = preg_replace_callback(_cs_liens_HTTP
, 'cs_liens_raccourcis_callback', $texte);
26 // trouve et protege : www.lieu.qqchose ou ftp.lieu.qqchose
27 $texte = preg_replace_callback(_cs_liens_WWW
, 'cs_liens_raccourcis_callback', $texte);
29 $autorises = _cs_liens_AUTORISE
;
30 $autorisesfin = _cs_liens_AUTORISE_FIN
;
31 // trouve : mailto:qqchose ou news:qqchose
32 if($GLOBALS["liens_orphelins"]>0) {
33 $texte = preg_replace_callback(_cs_liens_NEWS
, 'cs_liens_raccourcis_callback', $texte);
34 $texte = preg_replace_callback(_cs_liens_MAILS
, 'cs_liens_email_callback', $texte);
37 return echappe_retour($texte, 'LIENS');