Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

URL + Email cliquables Posté par Fabrice Lezoray

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);
?>
Url cliquable fonction Posté par Yves Maistriaux

Petite fonction permettant de rendre cliquable une ou plusieurs url placées dans un texte. Accepte des urls du type : http://www.unsite.com https://www.monsite.com ftp://www.monsite.org ainsi que toutes les extensions à 2 ou 4 lettres Utilise la fonction preg_replace

<?php

function urlclick($url){
$url=preg_replace('`(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))`',
'<a href="$1" target="_blank">$1</a>',$url);
return $url;
}
echo urlclick($texte);

?>
URL cliquable fonction V2 Posté par Yves Maistriaux

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);

?>
URL cliquable fonction V3 Posté par Yves Maistriaux

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>&nbsp;',
'&nbsp;<a href="http://$1" target="_blank">$1</a>&nbsp;');
return preg_replace($in,$out,$url);
}
echo clicklien($texte);

?>
URL cliquable simple Posté par Yves Maistriaux

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);

?>
Supprimer les liens d'un texte Posté par Yves Maistriaux

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);
?>
Url et balises perso. Posté par Yves Maistriaux

Petite regex permettant de créer des liens au départ de balises perso.

Url et balises perso. V2 Posté par SlimShady

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]

Parser une URL Posté par Scullder

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
)
*/

?>
URL (http, https, ftp, mail) cliquables, raccourcies si trop longues Posté par Naixn

Reconnait tout type d'adresses : http://xxxx https://xxxx http://www.site.com/page.php?id=2&cat=3#ancre3 www.site.com www.site.com/page.php?id=2&cat=3#ancre3 ftp://login:pwd@ftp.site.com email@site.com Si l'adresse est trop longue, elle est raccourcie. Ex: http://www.site.com/index.php?img=1&date=2005-05-16&per=1&sdid=4#ancre4 devient http://www.site.com/inde...sdid=4#ancre4 Fonction principale à placer dans le code : make_clickable

<?php

function make_clickable($text)
{
// Les 3 regexp suivant sont issus des forum phpBB
$ret = ' ' . $text;
$ret = preg_replace_callback("!(^|[\n ])(https?://[^ \"\n\r\t<]*)!is", "regexp_http", $ret);
$ret = preg_replace_callback("!(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)!is", "regexp_http", $ret);
$ret = preg_replace_callback("!(^|[\n ])([a-z0-9&\-_.\S]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)!i", "regexp_mail", $ret);
$ret = substr($ret, 1);

return($ret);
}
function shorten($value, $length = 50)
{
if (strlen($value) > $length)
return substr($value , 0, 35 ) . '...' . substr($value , -15);
else
return $value;
}
function regexp_http($value, $http = '', $end = '')
{
if (!preg_match("!^http!", $value[2]))
$http = 'http://';
if (preg_match("!([\.,\?\!]+)$!", $value[2], $match))
{
$end = $match[1];
$value[2] = preg_replace("!([\.,\?\!]+)$!", "", $value[2]);
}
return $value[1] . '<a href="' . $http . $value[2] . '" target="_blank">' . shorten($value[2]) . '</a>' . $end;
}
function regexp_mail($value, $end = '')
{
if (preg_match("!([\.,\?\!]+)$!", $value[2], $match))
{
$end = $match[1];
$value[2] = preg_replace("!([\.,\?\!]+)$!", "", $value[2]);
}
return $value[1] . '<a href="mailto:' . $value[2] . '@' . $value[3] . '">' . shorten($value[2] . '@' . $value[3]) . '</a>' . $end;
}

?>
Césure d'url dans un texte Posté par Yves Maistriaux

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.

URL cliquable fonction V4 (10/2005) Posté par Yves Maistriaux

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.

ADAM Benjamin 2008 | Admin