OVH Cloud OVH Cloud

Formatage d'url dans un texte dynamique.

2 réponses
Avatar
Mac
Comment puis-je faire pour que tout les éléments d'un texte, extrait d'une base de donnée,
suivants un "http://" ou un "www." jusqu'à l'espace suvant soit transformé en URL.
Exemple : si mon texte est "Mon lien www.gypaete.net à visiter" comment trasformer le code
html généré par : " Mon lien <a href="http://www.gypaete.net">www.gypaete.net</a> à visiter "

Je n'ai pas cru voir dans les fonctions PHp de truc le faisant automatiquement, peut-être en
cherchant les occurences de "www." dans le texte mais je ne vois pas quelles fonctions peut
convenir.

Si vous avez une idée ...

Merci !

2 réponses

Avatar
MERCIER Pascal
Mac wrote:

Comment puis-je faire pour que tout les éléments d'un texte, extrait d'une base de donnée,
suivants un "http://" ou un "www." jusqu'à l'espace suvant soit transformé en URL.
Exemple : si mon texte est "Mon lien www.gypaete.net à visiter" comment trasformer le code
html généré par : " Mon lien <a href="http://www.gypaete.net">www.gypaete.net</a> à visiter "

Je n'ai pas cru voir dans les fonctions PHp de truc le faisant automatiquement, peut-être en
cherchant les occurences de "www." dans le texte mais je ne vois pas quelles fonctions peut
convenir.


preg_replace ou eregi_replace sont les fonctions qu'il vous faut.

Si vous avez une idée ...

Merci !


2ri1

Avatar
Nicklas
Le Mon, 16 Feb 2004 20:31:04 +0000, Mac a écrit :

Comment puis-je faire pour que tout les éléments d'un texte, extrait d'une base de donnée,
suivants un "http://" ou un "www." jusqu'à l'espace suvant soit transformé en URL.
Exemple : si mon texte est "Mon lien www.gypaete.net à visiter" comment trasformer le code
html généré par : " Mon lien <a href="http://www.gypaete.net">www.gypaete.net</a> à visiter "

Je n'ai pas cru voir dans les fonctions PHp de truc le faisant automatiquement, peut-être en
cherchant les occurences de "www." dans le texte mais je ne vois pas quelles fonctions peut
convenir.

Si vous avez une idée ...

Merci !


La solution classique est de faire une regex pour rechercher
les url du type : http://www.xxx.xxx ou www.xxx.xxx

Ce n'est pas si compliqué, mais ce n'est pas pratique à faire.

Souvent on demande à l'utilisateur de rentrer des balises.
Exemple :
- [url]www.xxxx.xxx[/url]
- [url=www.xxxx.xxx]Site[/url]
Et avec une regex, tu génères le lien :

$patterns = array();
$replacements = array();

// [url]xxxx://www.progweb.com[/url]
$patterns[] = "#[url]([a-z]+?://){1}(.*?)[/url]#si";
$replacements[] = '<a href="12">12</a>';

// [url]www.progweb.com[/url] code..
$patterns[] = "#[url](.*?)[/url]#si";
$replacements[] = '<a href="http://1">1</a>';

// [url=xxxx://www.progweb.com]ProgWeb[/url]
$patterns[] = "#[url=([a-z]+?://){1}(.*?)](.*?)[/url]#si";
$replacements[] = '<a href="12">3</a>';

// [url=www.progweb.com]ProgWeb[/url]
$patterns[] = "#[url=(.*?)](.*?)[/url]#si";
$replacements[] = '<a href="http://1">2</a>';

$string = preg_replace($patterns, $replacements, $string);



Sinon pour répondre à ta question :
$string eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",
"<a href="1://23">1://23</a>",$string);

--
Nicklas
ProgWeb - Développer son site Internet
http://www.progweb.com