diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 2f0fc43645693b01c56e4bffa83485797c8ba2b7..61cb9e8d05203c089d9c4b213f0d9d5a78443d5f 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -883,4 +883,39 @@ function calendrier($date='', $type='mois', $echelle='', $partie_cal='', $script http_calendrier_init($date, $type, $echelle, $partie_cal, $script); } +// un filtre pour transformer les URLs relatives en URLs absolues ; +// ne s'applique qu'aux #URL_XXXX +function url_absolue($url) { + $url = trim($url); + + if (preg_match(',^[a-z0-9]+://,i', $url)) + return $url; + + $site = lire_meta('adresse_site'); + if ($url[0] == '/') { + if (preg_match(',^([a-z0-9]+://)(.*?/)?,i', $site.'/', $regs)) + $host = $regs[1].$regs[2]; + else + $host = $site.'/'; + return $host.substr($url,1); + } + + return $site.'/'.$url; +} + +// un filtre pour transformer les URLs relatives en URLs absolues ; +// ne s'applique qu'aux textes contenant des liens +function liens_absolus($texte) { + if (preg_match_all(',(<a[[:space:]]+[^<>]*href=["\']?)([^"\' ><[:space:]]+)([^<>]*>),ims', + $texte, $liens, PREG_SET_ORDER)) { + foreach ($liens as $lien) { + $abs = url_absolue($lien[2]); + if ($abs <> $lien[2]) + $texte = str_replace($lien[0], $lien[1].$abs.$lien[3], $texte); + } + } + return $texte; +} + + ?>