Texte area, extraire le lien

Signaler
Messages postés
503
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
20 mars 2012
-
Messages postés
15
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
17 avril 2008
-
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

Messages postés
15
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
17 avril 2008
1
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.