Se connecter / S'enregistrer

Résolu Affichage des liens

Solutions (5)
Tags :
  • online
  • Programmation
|
Bonjour,

Je réalise un petit site pour une guilde d'un jeu online.
Mais je rencontre un petit problème avec une boucle.

Ca concerne le script des news. J'insère la news via le panneau d'admin comme ceci:

  1. $texte = nl2br(mysql_real_escape_string(htmlspecialchars($_POST['texte'])));


Et je l'affiche comme ceci:

  1. $texte = nl2br(stripslashes($rep['texte']));


Mon problème est que si j'insère une news avec un lien http:// il ne reconnait pas le lien comme cliquable normale me direz-vous, puisque je n'ai pas préalablement ouvert la balise <a>...

Je pourrais directement ajouté la balise <a> à l'ajout de la news, mais d'autres personnes vont utilisés le panneau d'admin et ne connaissent pas le html... je voudrais donc qu'il reconnaisse une chaine commençant par http:// comme un lien...

J'ai d'abort pensé à faire un substr pour qu'il detecte les 7 premiers caractères de la chaine et si celle-ci commence par http:// ajouté la balise <a> mais auriez-vous une solution plus simple ou plus pratique?

Merci d'avance pour vos réponses.
Contenus similaires
Meilleure solution
partage
|
Ca devrait être bon comme ça :

  1. function lienhtml($message)
  2. {
  3. global $message;
  4.  
  5. $message = eregi_replace ("[[:alpha:]]+://www", "www",$message);
  6.  
  7. $message = ereg_replace ("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]#?/&=]", "<a href=\\0 target=_blank>\\0</a>", $message);
  8.  
  9. $message = ereg_replace ("www.[^<>[:space:]]+[[:alnum:]#?/&=]", "<a href=http://\\0 target=_blank>\\0</a>", $message);
  10.  
  11. $message = ereg_replace ('[_a-zA-z0-9\-]+(\.[_a-zA-z0-9\-]+)*\@' . '[_a-zA-z0-9\-]+(\.[a-zA-z]{1,3})+', '<a href="mailto:\\0">\\0</a>', $message);
  12.  
  13. return $message;
  14. }
  • Commenter cette solution |
Score
0
òh
òi
|
Parfait, merci beaucoup! xD
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci romainb_idn@idn

C'est exactement ce que je cherchais... ca fonctionne très bien, sauf un petit soucis:

Les liens comme www.test.com?viewtopic=test par exemple, il ajoute la fermeture du lien après le .com

Je suis une bille en expressions régulière si tu pouvais m'éclairer, merci encore!
  • Commenter cette réponse |
Score
0
òh
òi
|
La 3e est pour mettre un lien mailto automatiquement sur les adresses mail, si ça ne te plait pas, tu peux la retirer évidemment. C'est un exemple.
  • Commenter cette réponse |
Score
0
òh
òi
|
Il faut utiliser les expressions régulières je pense.

J'ai trouvé cette fonction sur le net, je pense que ça peut t'aider... (pas tester)

  1. <?php
  2. function lienhtml($message)
  3. {
  4. global $message;
  5.  
  6. $message = eregi_replace ("[[:alpha:]]+://www", "www",$message);
  7.  
  8. $message = ereg_replace ("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/](\.[a-z0-9-]{2,4})+", "<a href=\\0 target=_blank>\\0</a>", $message);
  9. $message = ereg_replace ("www.[^<>[:space:]]+[[:alnum:]/](\.[a-z0-9-]{2,4})+", "<a href=http://\\0 target=_blank>\\0</a>", $message);
  10. $message = ereg_replace ('[_a-zA-z0-9\-]+(\.[_a-zA-z0-9\-]+)*\@' . '[_a-zA-z0-9\-]+(\.[a-zA-z]{1,3})+', '<a href="mailto:\\0">\\0</a>', $message);
  11.  
  12. return $message;
  13. }
  14. ?>
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS