Problème BBcode et URL internet
Posté : 17 oct. 2011, 00:51
Bonjour à tous!
Je suis en train de faire un bbcode.
Cependant j'ai un soucis. J'aimerais que lorsque quelqu'un met un lien http://www.blabla.com, Ce lien sois directement en lien cliquable. J'aimerais aussi que l'on puisse donner un nom a un lien.
Donc, voici le bout de code en question
Lorsque l'on veut mettre une image, le code est <img><lien>http://blabla.com</lien></img> Mais ce code est, daprès le code ci-dessus, directement modifié en <a href=blabla>... Donc l'image ne sera pas visible vu que le lien donnera <img src="<a href=http://www.blabla....
Je ne sais pas si je suis clair... Mais mes deux code se font conflit. Je ne sais pas comment régler le problème.
J'ai une autre question. Si quelqu'un met <img><lien url="http://www.blabla.com">www.blabla.com</lien></img>, cela ne met pas les http:// devant et donc le lien mène sur http://www.monsite.com/www.blabla.com...
C'est pareil pour la balise lien, [lien url="www.blabla.com"]collaide[/lien] Le lien sera vers <lien url="http://www.monsite.com/www.blabla.com"> ... .com</lien> (car il n'y a pas les http://)
Je me suis dit, pourquoi ne pas regarder si dans le "url=xxx" il y a bien une adresse http://, si il n'y a pas, il faut juste l'ajouté devant, sinon, c'est que le lien est certainement bon.
Ce sont les seules qui ont besoin de cette vérification.
Quel regex utiliser dans ce cas?
Genre 3 regex. Le premier qui regarde pour le text <lien url=xxx> Il y a bien http:// juste après le =. Si il y ai, il n'agis pas, sinon, il l'ajoute..
Pareil pour <img>xxx</img> Et pour <lien>xxx<lien>.. C'est juste de procéder comme ça?
Ou il fraudrait plutôt procéder avec la version déjà changée par le bbcode? Genre vérifier <img src="xxx" et <a href="xxx" ?
Je débute alors désolé si les questions sont stupides. J'ai fait des recherches mais il n'y a pas beaucoup d'aide pour faire un bbcode.
Merci à vous de m'aider!
Tex
Je suis en train de faire un bbcode.
Cependant j'ai un soucis. J'aimerais que lorsque quelqu'un met un lien http://www.blabla.com, Ce lien sois directement en lien cliquable. J'aimerais aussi que l'on puisse donner un nom a un lien.
Donc, voici le bout de code en question
<?php
// (FR) Lien non précisée
$text = preg_replace('!\<lien\>(.+)\</lien\>!isU', '<a href="$1" target="_blank">$1</a>',$text);
// (FR) Lien préciser
$text = preg_replace('!\<lien url="(.+)">(.+)</lien>!isU', '<a href="$1">$2</a>', $text);
// Lien naturel
$text = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $text);
//images
$text = preg_replace('!\<img\>(.+)\</img\>!isU', '<img src="$1" alt="Image">', $text);
J'ai un problème ici. Lorsque l'on veut mettre une image, le code est <img><lien>http://blabla.com</lien></img> Mais ce code est, daprès le code ci-dessus, directement modifié en <a href=blabla>... Donc l'image ne sera pas visible vu que le lien donnera <img src="<a href=http://www.blabla....
Je ne sais pas si je suis clair... Mais mes deux code se font conflit. Je ne sais pas comment régler le problème.
J'ai une autre question. Si quelqu'un met <img><lien url="http://www.blabla.com">www.blabla.com</lien></img>, cela ne met pas les http:// devant et donc le lien mène sur http://www.monsite.com/www.blabla.com...
C'est pareil pour la balise lien, [lien url="www.blabla.com"]collaide[/lien] Le lien sera vers <lien url="http://www.monsite.com/www.blabla.com"> ... .com</lien> (car il n'y a pas les http://)
Je me suis dit, pourquoi ne pas regarder si dans le "url=xxx" il y a bien une adresse http://, si il n'y a pas, il faut juste l'ajouté devant, sinon, c'est que le lien est certainement bon.
Ce sont les seules qui ont besoin de cette vérification.
Quel regex utiliser dans ce cas?
Genre 3 regex. Le premier qui regarde pour le text <lien url=xxx> Il y a bien http:// juste après le =. Si il y ai, il n'agis pas, sinon, il l'ajoute..
Pareil pour <img>xxx</img> Et pour <lien>xxx<lien>.. C'est juste de procéder comme ça?
Ou il fraudrait plutôt procéder avec la version déjà changée par le bbcode? Genre vérifier <img src="xxx" et <a href="xxx" ?
Je débute alors désolé si les questions sont stupides. J'ai fait des recherches mais il n'y a pas beaucoup d'aide pour faire un bbcode.
Merci à vous de m'aider!
Tex