Texte area, extraire le lien

younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012 - 24 mars 2007 à 12:06
cs_Dawelle Messages postés 15 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 17 avril 2008 - 26 mars 2007 à 23:20
Bonjour,
j'ai un texte area avec une barre de bbcode (souligné, gras,...., url).
lorsque l'utilisateur saisie son texte il peut aussi ecrire un lien (URL),
soit il selectionne le lien(URL) et il le met un URL(crée un lien) soit il ecrit son lien(URL) sans mettre (crée un lien).
alors mon problème est ceci :
dans l'affichage de texte enregisté dans la base de données(MySQL) j'aiemrai avoir les liens ecrivent avec le texte comme des vrai lien clicable.
Merci de votre aide.

N'importe où. 
mais là où il le faut.

1 réponse

cs_Dawelle Messages postés 15 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 17 avril 2008 1
26 mars 2007 à 23:20
Salut,

Si j'ai bien compris, ton utilisateur peut insérer une URL via un bouton "Insérer un lien", ce qui crée un bbcode [url] /url.

Mais il peut également écrire l'adresse directement dans le texte, et celle-ci, bien qu'interprétée par ton éditeur comme une URL, est stockée en texte brut dans la base de données MySQL.

Ta demande est donc de pouvoir transformer des liens en "texte brut" sous forme html / bbcode, tout en conservant ceux déjà formatés en bbcode.

Ta solution se trouve dans les expressions régulières, avec la fonction preg_replace().

Je te fais un exemple et te laisse creuser si tu veux l'améliorer :

<?php

$text = '[url]http://www.phpcs.com/url ou [url]www.phpcs.com/url ou www.phpcs.com ou http://phpcs.com';

$text = preg_replace('´([^\]/])(www\.|http://)([a-zA-Z0-9\-\.]+)\.([a-zA-Z]{2,3})´', ' [url]\\2\\3.\\4/url', $text);

echo $text;

?>

La première ligne, c'est ta variable issue de MySQL (contenant à la fois du bbcode [url] ainsi que des liens en texte brut).

La deuxième ligne, c'est la fonction preg_replace, qui cherche les liens commençants par "www." ou "http://" et n'étant pas précédés du signe "]" (indiquant qu'il y a déjà le tag bbcode [url] qui le précède), ou le signe "/" (pour ne pas que les http://www. soient reconnus comme 2 liens différents).

Si cette occurence est trouvée, alors il l'entoure par les bbcodes [url] et /url.

A noter que j'ai pas trop travaillé la structure de l'url... j'ai fait ce qu'il me semblait le plus basique.
0
Rejoignez-nous