Comment remplacer [url] et [/url] (bbcode) en balise html

Eléphant du PHP | 271 Messages

06 janv. 2008, 01:00

Bonsoir,
j'ai cette ligne de code pour éditer un lien

Code : Tout sélectionner

<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
Puis j'ai cette ligne pour traiter les afin de les transformer en balise html

Code : Tout sélectionner

//lien $texte = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $texte);
Lorsque j'appelle la page où le lien doit apparaître les balises bbcode entourent le texte. Je devrais avoir ça http://www.lesite.fr mais j'ai ça :

Code : Tout sélectionner

[url]www.lesite.fr[/url]


Ou dois je modifier et que dois je modifier pour que cela s'affiche correctement ?

Merci d'avance de l'aide
Patience et obstination sont des qualités !

Mammouth du PHP | 2937 Messages

06 janv. 2008, 01:22

Essaie ce code :
$texte = '[url]www.lesite.fr[/url]';
$texte_html = preg_replace ("#\[url\](.)+?\[/url\]#i", '<a href="http://\\1">\\1</a>', $texte);
// Si le BBCode contient déjà un http:// ou un https://, suppression du doublon
$texte_html = preg_replace ("#http://(https?://)#i", '\\1', $texte_html);

Eléphant du PHP | 271 Messages

06 janv. 2008, 01:40

Si je fais ça :

Code : Tout sélectionner

$texte = preg_replace ("#\[url\](.)+?\[/url\]#i", '<a href="http://\\$1">\\$1</a>', $texte);
il écrit $1

Si je fais ça avec 1 ou $1 :

Code : Tout sélectionner

$texte_html = preg_replace ("#\[url\](.)+?\[/url\]#i", '<a href="http://\\$1">\\$1</a>', $texte);
Il écrit

Code : Tout sélectionner

[url]www.lesite.fr[/url]
Personnellement je ne vois pas comment faire ?
Patience et obstination sont des qualités !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 janv. 2008, 15:29

Peut être en te décidant soit pour la syntaxe $1 soit pour la syntaxe \1 pour récupérer le contenu de la parenthèse capturante et en évitant de mélanger les deux ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 271 Messages

06 janv. 2008, 22:32

Je l'ai écrit de la façon suivante :
<? 
$texte = preg_replace('`\[url\](.+)\[/url\]`isU' , '<a href="http://$1">$1</a>', $texte);
et ça fonctionne. Il affiche http://www.lesite.fr et c'est que je veux.
Merci de l'aide.
Patience et obstination sont des qualités !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 janv. 2008, 22:43

Et la syntaxe [url=www.monsite.fr]mon site[/url] ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 271 Messages

07 janv. 2008, 00:59

L'adresse en www change régulièrement et nommer l'adresse [ url=www.monsite.fr]mon site[/url] me donnera aucune liberté.
Je précise que je modifie mes pages à l'aide d'un formulaire.

Merci de l'aide
Patience et obstination sont des qualités !