OVH Cloud OVH Cloud

Probleme d'expressions regulieres

2 réponses
Avatar
silver
Bonjour,

Je développe un petit forum maison en php pour mon site.

Afin que les membres puissent afficher des images dans leurs messages à
l'aide de balises, je passe le texte de leurs messages à travers un filtre :

$text =
preg_replace("#\[img\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/img\]#sie", "'<img
src=\\1' . str_replace(' ', '%20', '\\3') . '>'", $text);

Puis j'ai eu l'idée de tranformer automatiquement tout texte commençant
par http:// en lien, j'ai donc rajouté à mon filtre :
$text = preg_replace("/(http:\/\/[^\r\n\t\s]+)/s", "<a href=\"$2\"
target=blank>$2</a>", $text);

Mais je me suis ensuite rendu compte que cette commande "cassait" le
premier filtre pour l'affichage des images. Je voudrais donc que ce
second filtre ne soit pas appliqué si le texte commençant par "http://"
est précédé de la balise "[img]". Mais là je sèche un peu, je n'ai pas
trouvé l'expression régulières qui me permettrait de faire ça ...

Des idées ?

2 réponses

Avatar
Geoffrey Bachelet
a priori

$text = preg_replace("/[^]](http://[^rnts]+)/s", "<a
href="$2"target=blank>$2</a>", $text);

devrait transformer les http:// en url sauf si ils sont précédés d'un ]
Avatar
silver
Geoffrey Bachelet wrote:
a priori

$text = preg_replace("/[^]](http://[^rnts]+)/s", "<a
href="$2"target=blank>$2</a>", $text);

devrait transformer les http:// en url sauf si ils sont précédés d'un ]


Oui, ça marche, merci !