1) URL cliquable fonction V2
posté par Yves Maistriaux (ID : 36)
Fonction permettant de rendre cliquable une ou plusieurs url placées dans un texte.
Accepte dans du texte, des urls du type :
http://www.unsite.com
https://www.monsite.com
ftp://www.monsite.org
et aussi www.monsite.org
ainsi que toutes les extensions à 2 ou 4 lettres.
Accepte également une chaine contenant une url seule
Utilise la fonction preg_replace et un tableau.
<?php
function clicklien($url){
$in=array(
'`(((https?|ftp)://(www\.)?[^www][[:alnum:]_.-]+)\.([a-z]{2,4}))`',
'`\s?(?<!//)(www\.)([[:alnum:]_.-]+)\.([a-z]{2,4})\s?\W?`');
$out=array(
'<a href="$1" target="_blank">$1</a>',
'<a href="http://$1" target="_blank">$1</a>');
return preg_replace($in,$out,$url);
}
echo clicklien($texte);
?>
2) URL cliquable fonction V3
posté par Yves Maistriaux (ID : 37)
Identique à la V2, mais celle-çi prend en compte n'importe quel type d'url
www.unsite.com
http://unsite.com
http://www.unsite.com
http://www.expreg.com/liresource.php?type=URL
bref, toutes URL se trouvant dans un texte.
<?php
function clicklien($url){
$in=array(
'`(((?:https?|ftp)://\S+)(\s|\z)`',
'`((?<!//)(www\.)\S+)(\s|\z)`');
$out=array(
'<a href="$1" target="_blank">$1</a> ',
' <a href="http://$1" target="_blank">$1</a> ');
return preg_replace($in,$out,$url);
}
echo clicklien($texte);
?>
3) URL cliquable simple
posté par Yves Maistriaux (ID : 43)
Rendre simplement les urls placées entre < et > cliquables dans vos textes.
<?php
$motif='`<([^>].*)>`';
$sortie='<a href="$1" target="_blank">$1</a>';
$texte=preg_replace($motif,$sortie,$texte);
?>
4) Supprimer les liens d'un texte
posté par Yves Maistriaux (ID : 48)
Petite regex qui permet de supprimer l'action des liens dans des pages chargées sur le net.
<?php
$motif='`<a[^>]+?>(.*?)</a>`';
$sortie='$1';
$texte=preg_replace($motif,$sortie,$texte);
?>
5) Url et balises perso.
posté par Yves Maistriaux (ID : 49)
Petite regex permettant de créer des liens au départ de balises perso.
<?php
$chaine="Test d'une url placée entre des balises perso style [ url ] et [ /url ]
[url]https://www.site1.com[/url] suivie de [url]http://www.site2.com[/url]
et autres balises [url]http://www.site3.com[/url].";
$motif='`\[url](.*?)\[/url]`si';
$sortie='<a href="$1" target="_blank">$1</a>';
echo preg_replace($motif,$sortie,$chaine);
?>
6) Césure d'url dans un texte
posté par Yves Maistriaux (ID : 62)
Une petite fonction pour appliquer la césure sur des url à rallonge placée dans un texte.
Peut être facilement modifiée pour être utilisée avec ce satané bbcode.
Peut également être améliorée en fonction de vos besoins spécifiques.
<?php
$texte = 'Et voici un lien dans une page
<http://www.expreg.com/index.php?argument1=un>
auquel on va appliquer une césure';
function cesure_lien($match) {
return '<a href="'.$match[1].'" target="_blank">'.substr($match[1],0,15).'...</a>';
}
$motif='`<((https?|ftp)://\S+)>`';
echo preg_replace_callback($motif,'cesure_lien',$texte);
// affichera : http://www.expr...
?>
Pour être utilisée avec un bbcode par exemple, le motif pourrait être :
$motif='`\[url]([^[]+)\[/url]`';
7) URL cliquable fonction V4 (10/2005)
posté par Yves Maistriaux (ID : 63)
Cette dernière version tient compte de tous les types d'url placées au travers d'un texte, comme un forum ou livre d'or.
- Urls avec leurs protocoles respectifs
- Urls sans protocoles avec le www.
- Urls dynamiques avec ou sans protocole
Les regex tiennent compte des éventuels caractères de ponctuation qui pourraient être placés directement à la suite de l'url afin de ne pas les matcher.
<?php
$texte = 'Bonjour ou bonsoir à toutes et tous,
Vous souhaitez rendre cliquable une ou des urls placées au
travers de vos textes comme celle-ci www.monsite.com.
Vous pourrez également matcher des urls avec leurs
protocoles respectifs à savoir http://www.monsite.com/mondossier/mapage.html ou
ftp://monsite.com, par exemple, ainsi que les url dynamique telle que
http://site.com/regex/page.php?truc=montruc&machin=lemachin et aussi
www.site.com/clicurl.php?truc=montruc&machin=lemachin et www.google.fr';
function clicklien($url){
$in=array(
'`((?:https?|ftp)://\S+[[:alnum:]]/?)`si',
'`((?<!//)(www\.\S+[[:alnum:]]/?))`si'
);
$out=array(
'<a href="$1">$1</a>',
'<a href="http://$1">$1</a>'
);
return preg_replace($in,$out,$url);
}
echo clicklien($texte);
?>
8) Url et balises perso. V2
posté par SlimShady (ID : 56)
Cette regex est une version améliorée de la regex de Yves Maistriaux ce qu'il y a de nouveau c'est que vous pouvez mettre un nom à votre lien au lieu que ce soit par exemple : www.expreg.com
C'est à dire que vous mettrez : [url=www.url.com]le nom de l'url[/url]
<?php
$chaine="[url=http://www.expreg.com]Le site pour apprendre les expressions
réguliéres ![/url]";
$motif='`\[url=(.*?)](.*?)\[/url]`si';
$sortie='<a href="$1" target="_blank">$2</a>';
echo preg_replace($motif,$sortie,$chaine);
?>
9) Parser une URL
posté par Scullder (ID : 57)
Avant de découvrir la fonction php parse_url, j'ai fait cette fonction qui lui ressemble tout en étant moins complète, et en me basant sur une expression régulière déjà existante dans la classe HTTP ( http://pear.php.net/package/HTTP ) de pear distribué sous la version 3 de la PHP license : '`^(([a-z0-9]+)://[^/:]+)(:[\d]+)?`i'
La fonction cut_url a donc un argument, une chaine de caractère (une url) et retourne un tableau de ce type :
Array
(
[0] => url
[1] => protocole
[2] => nom de domaine
[3] => port
[4] => chemin
)
<?php
$url = "http://www.jeuxvideo.com:80/test/forums.htm";
function cut_url($url)
{
preg_match('`^([a-z0-9]+://)?([^/:]+)(:[\d]+)?(/.*$)?`i', $url, $out);
return $out;
}
print_r(cut_url($url));
/* affichera
Array
(
[0] => http://www.jeuxvideo.com:80/test/forums.htm
[1] => http://
[2] => www.jeuxvideo.com
[3] => :80
[4] => /test/forums.htm
)
*/
?>
10) URL + Email cliquables
posté par Fabrice Lezoray (ID : 7)
Cette portion vous permettra de rendre les URLs et les adresses mails cliquables dans vos textes, en utilisant preg_replace() et les tableaux.
<?php
// le texte ou l on va rendre les email et les urls cliquables
$texte = 'debut du texte http://expreg.com suite info@expreg.com encore
du texte https://europeancards.com fin';
$in = array(
'`((?:https?|ftp)://\\S+)(\\s|\\z)`',
'`([[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4}))`'
);
$out = array(
'<a href="$1">$1</a>$2',
'<a href="mailto:$1">$1</a>'
);
echo preg_replace($in, $out, $texte);
?>