Formater texte php avec liens inclus.
t671
-
t671 Messages postés 1478 Date d'inscription Statut Membre Dernière intervention -
t671 Messages postés 1478 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans un formulaire de saisie de texte, celui-ci peut contenir un lien (style http://.........). Le texte est enregistré dans un base de donnée.
A la demande, ce texte est afficher à l'écran, et je voudrais que le lien contenu soit cliquable.
Alors, vaut-il mieux formater le texte avant enregistrement pour rendre le lien cliquable, ou vaut-il mieux rendre le lien cliquable à l'affichage (donc formater le texte pour l'affichage) ?
Comment écrire l'une et l'autre solution ?
Merci d'avance pour l'aide apportée !
Dans un formulaire de saisie de texte, celui-ci peut contenir un lien (style http://.........). Le texte est enregistré dans un base de donnée.
A la demande, ce texte est afficher à l'écran, et je voudrais que le lien contenu soit cliquable.
Alors, vaut-il mieux formater le texte avant enregistrement pour rendre le lien cliquable, ou vaut-il mieux rendre le lien cliquable à l'affichage (donc formater le texte pour l'affichage) ?
Comment écrire l'une et l'autre solution ?
Merci d'avance pour l'aide apportée !
7 réponses
-
il vaut mieux ne pas formater les données avant de les stocker, ça bloquerait les évolutions et ré-utilisabilité du code.
La tu enregistres et récupères des données que tu exploite et reformates par la suite, c'est bien mieux et plus évolutif .
Comment écrire l'une et l'autre solution ?
Mmmm je vois pas bien ton problème la... -
Merci Zep3k!GnO.
OK ! Donc le texte est saisi, et contient un lien à l'intérieur.
Je ne formate pas le texte à l'enregistrement dans la base.
Mais à l'affichage du texte à l'écran, je voudrais que le lien contenu dans le texte soit cliquable.
Comment faire ? -
Heuu, bin tu le mets en lien (j'suis pas sur que ca soit ça, car c'est assez basique) :
Genre :$sSqlQuery = "SELECT lien FROM 'TA_TABLE' WHERE id = 'TON_ID' "; $mRet = mysql_query($sSqlQuery) or die('Error mysql query : '.$sSqlQuery.' -> '.mysql_error()); if(mysql_num_rows($mRet) > 0){ while($aLinkData = mysql_fetch_assoc($mRet)){ echo "<br/><a href='".$aLinkData['lien']."' >".$aLinkData['lien'].'</a>'; } }
C'est ça que tu voulais ?
A noter qu'il faut remplacer ma requête par la tienne... -
Oui, mais dans ta requête, le lien est bien défini et isolé par rapport au texte.
Mais si le lien est noyé dans le texte ???
J'ai trouvé une solution qui est :$chaine = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\">\\1://\\2\\3</A>",$chaine);
mais à l'enregistrement, rien n'est écrit dans la base ! Je me demande si il faut modifier le format de ma base ??? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Si le lien est noyé dans le texte, il faut faire comme tu as fais pour le rendre cliquable, le détecter avec une regexp, tu fais un preg_replace par exemple et hop c'est bueno :)
P.S: attention eregi est deprecated depuis Php 5 ...
Zep3k!GnOOn est des rangers mec, des rangers...
-
Oui, et si je l'utilise pour un site hébergé chez Free, c'est ok !
Mais si je mets la formule chez un autre hébergeur, ça ne fonctionne pas, l'enregistrement ne se fait pas ! Si je supprime la formule, le texte s'enregistre ... !!!!!!
Comment remédier à cela ??? -
Problème résolu ....
Avant ça ne fonctionnait pas, maintenant ça fonctionne. Et j'ai rien changé ....!!!! ????
;o))
A++