Remplacer les occurences d'une variable [Résolu/Fermé]

Signaler
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
-
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
-
Bonjour à tous,
Je suis entrain de développer un petit forum sur un site. Il propose des zones de commentaire dans lesquelles les utilisateurs peuvent poster . Je voudrais remplacer toutes les occurrences des adresses web en liens actifs:
exemple:
si l'utilisateur saisi:"j'ai posté sur www.commentcamarche.net" on retourne "j'ai posté sur <a href='http://www.commentcamarche.net'>www.commentcamarche.net</a> " ceci pour toutes les occurences.

la fonction str_replace peut le faire mais partiellement, parcequ'elle ne remplace toutes les d'une chaine fixe( invariable) dc là je suis perdu.

j'ai pensé au preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $chaine)
mais je suis confu.

j'espere au moins avoir ete assez explicite par rapport à mon probleme
merci

ps: je voudrais pas utiliser de bbcode ni de classe ckeditor ca doit etre auto.

2 réponses


Salut,

Utilise Preg_replace() :)
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
14
Merci, pour ceux qui le desire voici une fonction toute faite qui resout mon probleme.
function clickable_link($text)
{
# this functions deserves credit to the fine folks at phpbb.com

$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);

// pad it with a space so we can match things at the start of the 1st line.
$ret = ' ' . $text;

// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, comma, double quote or <
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);

// matches a "www|ftp.xxxx.yyyy/zzzz" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// zzzz is optional.. will contain everything up to the first space, newline,
// comma, double quote or <.
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);

// matches an email@domain type address at the start of a line, or after a space.
// Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);

// Remove our padding..
$ret = substr($ret, 1);
return $ret;
}