[JS] problème avec les expressions régulières

problème avec les expressions régulières [JS] - HTML/CSS - Programmation

Marsh Posté le 26-07-2003 à 23:13:10    

bonjour, dans mon forum, je gère l'affichage en JS et beaucoup des traitements sont faits en JS.
 
J'ai le Pb suivant:
 
pour gérer les urls cliquables dans le forum, j'ai l'expression régulière suivante:

Code :
  1. var exp1=new RegExp("((http|mailto|news|ftp|https)://(([-&a-z0-9\/\.\?_=#@:~])*))","gi" );
  2. return chaine.replace(exp1,"<A href=\"$1\" target=\"_blank\">$1</A>" );


le problème est que lorsque l'on insère une image [ img]http://www.lien_vers_mon_image.gig[ /img] l'adresse HTTP est traitée par l'expression régulière, et l'image ne s'affiche donc pas.
 
comment faire pour corriger ce Pb ?


Message édité par THE REAL SMILEY le 26-07-2003 à 23:14:40
Reply

Marsh Posté le 26-07-2003 à 23:13:10   

Reply

Marsh Posté le 27-07-2003 à 01:39:53    

Dans l'expression réguliere, indique que tu veut soit un retour chariot, soit un espace, avant l'url.
"/( |\r\n|\n|\r|:|;)(http|https|ftp|mms):&#47;&#47;([^ !\'\"\r\n]+)/i"


Message édité par skylight le 27-07-2003 à 01:43:57
Reply

Marsh Posté le 27-07-2003 à 01:40:34    

Note : les &#47; sont a remplacer par / dans vos forums... moi j'ai transformé les  / en leur caractere acsii pour plus de facilité.

Reply

Marsh Posté le 27-07-2003 à 01:42:17    

Pour info, voici mes expression régulieres :
 

Code :
  1. $search = array(
  2. "/\[img\](http|https|ftp|mms):&#47;&#47;(\S+)\[&#47;img\]/si",
  3. "/\[center\](.+?)\[&#47;center\]/si",
  4. "/\[left\](.+?)\[&#47;left\]/si",
  5. "/\[right\](.+?)\[&#47;right\]/si",
  6. "/\[justify\](.+?)\[&#47;justify\]/si",
  7. "/\[taille1\](.+?)\[&#47;taille1\]/si",
  8. "/\[taille2\](.+?)\[&#47;taille2\]/si",
  9. "/\[taille3\](.+?)\[&#47;taille3\]/si",
  10. "/\[spoiler\](.+?)\[&#47;spoiler\]/si",
  11. "/\[g\](.+?)\[&#47;g\]/si",
  12. "/\[i\](.+?)\[&#47;i\]/si",
  13. "/\[s\](.+?)\[&#47;s\]/si",
  14. "/\[x\](.+?)\[&#47;x\]/si",
  15. "/\[url=(http|https|ftp|mms):&#47;&#47;(.+?)\](.+?)\[&#47;url\]/si",
  16. "/\[url=(\S+)\](.+?)\[&#47;url\]/si",
  17. "/\[url\](.+?)\[&#47;url\]/si",
  18. "/\[code\](.+?)\[&#47;code\]/si",
  19. "/  /",
  20. "/\[#(.+?)\](.+?)\[&#47;#(.+?)\]/si",
  21. "/( |\r\n|\n|\r|:|;)(http|https|ftp|mms):&#47;&#47;([^ !\'\"\r\n]+)/i",
  22. "/( |\r\n|\n|\r|:|\(|\))www\.([^ !\'\"()\r\n]+)/i",
  23. "/( |\r\n|\n|\r|:|;)([^ !\'\"()\r\n;:]+)(@)([^ !\'\"()\r\n;]+)(\.)([^ !\'\"()\r\n;]+)/i",
  24. "/(\r\n)/",
  25. "/\[#(.[a-zA-Z0-9_\- ]*?)\]/si"
  26. );
  27. $replace = array(
  28. "<img src=\"\\1://\\2\" alt=\"\\1://\\2\" title=\"\\1://\\2\" />",
  29. "<div align=\"center\">\\1</div>",
  30. "<div align=\"left\">\\1</div>",
  31. "<div align=\"right\">\\1</div>",
  32. "<div align=\"justify\">\\1</div>",
  33. "<span class=\"taille1\">\\1</span>",
  34. "<span class=\"taille2\">\\1</span>",
  35. "<span class=\"taille3\">\\1</span>",
  36. "<div class=\"spoiler\"><b class=\"textesujet taille1\">Sélectionner le cadre pour voir le texte : </b><br />\\1</div>",
  37. "<b>\\1</b>",
  38. "<i>\\1</i>",
  39. "<u>\\1</u>",
  40. "<li>\\1</li>",
  41. "<a href=\"\\1://\\2\" target=\"_blank\" class=\"textesujet\" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">\\3</a>",
  42. "<a href=\"http://\\1\" target=\"_blank\" class=\"textesujet\" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">\\2</a>",
  43. "<a href=\"\\1\" target=\"_blank\" class=\"textesujet\" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">\\1</a>",
  44. "<table width=\"90%\" border=\"0\" bgcolor=\"#000000\" cellspacing=\"1\" cellpadding=\"2\"><tr><td bgcolor=\"#FFFFFF\"><font face=\"Courier\" size=\"2\">\\1</font></td></tr></table>",
  45. " &nbsp;",
  46. "<font color=\"\\1\">\\2</font>",
  47. "\\1<a href=\"\\2://\\3\" target=\"_blank\" class=\"textesujet \" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">\\2://\\3</a>",
  48. "\\1<a href=\"http://www.\\2\" target=\"_blank\" class=\"textesujet \" title=\"Cliquez ici pour ouvrir l'adresse dans une nouvelle fenêtre\">www.\\2</a>",
  49. "\\1<a href=\"mailto:\\2@\\4\\5\\6\" target=\"_blank\" class=\"textesujet\" title=\"Envoyer un mail à cette adresse\">\\2@\\4\\5\\6</a>",
  50. " <br />",
  51. " <img src=\"images/smileys/perso/" . $config . "_\\1.gif\" alt=\"\" title=\"[#\\1]\" />"
  52. );

Reply

Marsh Posté le 27-07-2003 à 01:58:38    

avis perso : pourquoi faire les expressions régulieres en JS ?
 
le php est tres rapide ... de plus si un gars a le JS desactivé, bein adieu la mise en page chez lui.
 
un forum, en general, la charge serveur est 90% mysql, et 10% php ... donc t'as de la marge.

Reply

Marsh Posté le 27-07-2003 à 14:01:22    

Skylight a écrit :

avis perso : pourquoi faire les expressions régulieres en JS ?
 
le php est tres rapide ... de plus si un gars a le JS desactivé, bein adieu la mise en page chez lui.
 
un forum, en general, la charge serveur est 90% mysql, et 10% php ... donc t'as de la marge.


Merci Sky pour tes astuces,
 
Je fais beaucoup de traitements en JS et non en PHP afin d'optimiser le poids des pages, par ex:

http://www.lewebrapide.com


est toujours plus court que:

<a href="http://www.lewebrapide.com" target="_blank">http://www.lewebrapide.com</a>


ça peut paraitre comme du chipotage, mais bon ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed