Bonjour,
Je suis un (grand) amateur... Je m'essaie au php, mais cela ne me réussit pas très bien apparement.
J'ai un problème de Regexp. J'essaie de transformer une sorte de BBcode (creole pour ceux qui connaissent) en un lien... Je voudrais que lorsqu'on écrit ceci:
[[http:://www.monsite.com]]
cela devienne ensuite ceci:
<a href="http://www.monsite.com">http://www.monsite.com</a>
et que lorsqu'on écrit ceci:
[[http:://www.monsite.com|étiquette]]
cela devienne ensuite
<a href="http://www.monsite.com">étiquette</a>
Voici ce que j'ai essayé, mais ça ne fonctionne pas très bien:
1 2 3 4 5 6 7
| <?
$p = $_POST["text"];
$uri_re = 'a-zA-Z0-9\?:\/\.\-_\+\#\(\),%&= ~';
//links
$p = preg_replace("#\[\[([".$uri_re."]+)\|*\]\]#isU", '<a href="$1">$1</a>', $p);
$p = preg_replace("#\[\[(".$uri_re."+)\|(.+)\]\]#isU", '<a href="$1">$2</a>', $p); ?> |
Je ne sais pas si effectuer 2 preg_replace à la suite pour le même (ou presque) markup est une bonne idée, mais je n'en ai pas trouvé d'autre.
Plus précisément, écrire [[http:://www.monsite.com]] donne bien le résultat voulu, mais dès que j'ajoute le | ainsi que l'étiquette, le code me retourne la chaine comme si aucune transformation n'avait été opérée.
Donc [[http:://www.monsite.com|mon étiquette]] renvoie exactement [[http:://www.monsite.com|mon étiquette]] dans l'état actuel des choses :-/

Quelqu'un a une idée?
(merci d'avance)
Partager