From fea09e39298192e2922f94e06147acaf4f686d5c Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Mon, 11 Apr 2005 09:15:43 +0000 Subject: [PATCH] =?UTF-8?q?deux=20filtres=20permettant=20de=20passer=20des?= =?UTF-8?q?=20liens=20relatifs=20aux=20liens=20absolus,=20=C3=A0=20la=20fo?= =?UTF-8?q?is=20quand=20on=20parle=20de=20[(#URL=5FARTICLE|url=5Fabsolue)]?= =?UTF-8?q?=20ou=20d'un=20texte=20complet=20[(#TEXTE|liens=5Fabsolus)]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Je n'ai malheureusement pas vu comment unifier les deux filtres sans risque d'erreur, mais je n'ai pas les yeux en face des trous ce matin :) Et pour le féminin/pluriel, je ne suis pas persuade non plus d'avoir fait le bon choix. A l'aide ! --- ecrire/inc_filtres.php3 | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 2f0fc43645..61cb9e8d05 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; +} + + ?> -- GitLab