regex,: detecter un espace

regex,: detecter un espace - PHP - Programmation

Marsh Posté le 20-11-2003 à 14:26:37    

salut, voila mon probleme c'est que je veux detecter un espace et le remplacer par  .
j'aurais pu utiliser str_replace, mais le probleme c'est que je veux seulement les espaces entre deux balise:
 

Code :
  1. "/\[fixe\](.+?)([ ])(.+?)\[\/fixe\]/si",


 mais apparement ca marche pas.
 
est ce vous voyez une solution qui marche ?


Message édité par forummp3 le 20-11-2003 à 14:28:44

---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 20-11-2003 à 14:26:37   

Reply

Marsh Posté le 20-11-2003 à 15:19:26    

(.+?) va matcher ton espace.
Il faudrait mettre ([^\n ]+?) ou quelque chose du genre.

Reply

Marsh Posté le 20-11-2003 à 15:21:11    

Pourquoi tu n'entoures pas simplement ton texte "fixe" de balises <pre> ?


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 20-11-2003 à 15:23:18    

Freekill a écrit :

Pourquoi tu n'entoures pas simplement ton texte "fixe" de balises <pre> ?

parce qu'il prend en compte les retour chariot (j'ai deja mis le <br /> ), et de plus ca change de font.


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 20-11-2003 à 15:29:04    

forummp3 a écrit :

parce qu'il prend en compte les retour chariot (j'ai deja mis le <br /> ), et de plus ca change de font.
 


 
Le traitement des balises "fixe" est assez pénible, j'ai mis du temps à l'implémenter.
 
Ma solution a été de les retirer du message avant le traitement (smilies, balises, etc.), de les traiter à part et de les réinjecter dedans à la fin.
 

Code :
  1. $text = $message;
  2. // Trouve les balises code
  3. $codes = "";
  4. preg_match_all("/(\[pre\])(.+?)(\[\/pre\])/si",$text,$codes);
  5. $codes = $codes[2];
  6. //traite le message
  7. (...)
  8. // Spécial pour les balises code
  9. if (is_array($codes))
  10. {
  11. foreach($codes as $this)
  12. {
  13.  $text = preg_replace("/(\[pre\])(.+?)(\[\/pre\])/si","<table width=\"90%\" align=\"center\"><tr><td class=\"sml\"><b>Code:</b></td></tr><tr><td class=\"code\"><pre>".$this."</pre></td></tr></table>",$text,1);
  14. }
  15. }


 
(changer le contenu du foreach selon ce que tu veux faire)
 
J'espère que ça t'aidera...


Message édité par Freekill le 20-11-2003 à 15:29:49

---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 20-11-2003 à 15:42:16    

Hmmm, je ne sais pas si je suis clair.
 
En fait il ne les "retire" pas du message, il en fait plutôt une sorte de sauvegarde dans un array.
 
Ensuite il traite le contenu de cet array et réinjecte le tout à la place de ce qui a été traité comme du texte "normal" (smilies et tout le tralala), ce que l'on ne souhaite pas pour le contenu des balises code.


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 20-11-2003 à 15:48:34    

finallement j'ai reussi,je met la fonction en entier, ca sera plus facile a comprendre:
 

Code :
  1. function ubbcode($reponse)
  2. {
  3. ///////////creation du code html//////////////////////
  4. $search = array(
  5. "/\[img\](http|https|ftp|mms)\:\/\/(\S+)\[\/img\]/si",
  6. "/\[center\](.+?)\[\/center\]/si",
  7. "/\[left\](.+?)\[\/left\]/si",
  8. "/\[right\](.+?)\[\/right\]/si",
  9. "/\[justify\](.+?)\[\/justify\]/si",
  10. "/\[g\](.+?)\[\/g\]/si",
  11. "/\[i\](.+?)\[\/i\]/si",
  12. "/\[s\](.+?)\[\/s\]/si",
  13. "/\[\*\](.+?)\n/si",
  14. "/\[url=(http|https|ftp|mms)\:\/\/(.+?)\](.+?)\[\/url\]/si",
  15. "/\[url=(\S+)\](.+?)\[\/url\]/si",
  16. "/\[url\](.+?)\[\/url\]/si",
  17. "/\[fixe\](.*)([ ])(.*)\[\/fixe\]/si",
  18. "/(^|\s)(http|https|ftp|mms)\:\/\/([^ !\'\"\(\)\[\]\r\n ]+)/i",
  19. "/(^|\s)www\.([^ !\'\"\(\)\[\]\r\n]+)/i"
  20. );
  21.  $teste= preg_replace($search[12],"\\1&nbsp;\\3",$reponse);
  22. $teste=str_replace(" ","&nbsp;",$teste);
  23. $replace = array(
  24. " <img src=\"\\1://\\2\" alt=\"\\1://\\2\" border=\"0\" title=\"\\1://\\2\" /> ",
  25. "<div align=\"center\">\\1</div>",
  26. "<div align=\"left\">\\1</div>",
  27. "<div align=\"right\">\\1</div>",
  28. "<div align=\"justify\">\\1</div>",
  29. "<b>\\1</b>",
  30. "<i>\\1</i>",
  31. "<u>\\1</u>",
  32. "<div><ul class=\"bleu\"><li>\\1</li><ul></div>",
  33. "<a href=\"\\1://\\2\" target=\"_blank\" >\\3</a>",
  34. "<a href=\"http://\\1\" target=\"_blank\" >\\2</a>",
  35. "<a href=\"\\1\" target=\"_blank\" >\\1</a>",
  36. "$teste",
  37. "<a href=\"\\2://\\3\" target=\"_blank\" class=\"lientopic2\">\\2://\\3</a>",
  38. "<a href=\"http://www.\\2\" target=\"_blank\" class=\"lientopic2\">www.\\2</a>"
  39. );
  40. //----------|  remplacement des expression regulieres |---------//
  41. $reponse = preg_replace($search, $replace, $reponse);
  42. $reponse=str_replace("\n"," <br />\n ",$reponse);
  43. //----------| fin remplacement |-----------------//  
  44. return $reponse;
  45. }


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 20-11-2003 à 15:49:00    

c'est cette partie:
 

Code :
  1. $teste= preg_replace($search[12],"\\1&nbsp;\\3",$reponse);
  2. $teste=str_replace(" ","&nbsp;",$teste);


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 20-11-2003 à 15:51:37    

Ouais, mais tu auras quand même des smiles et autres crasses dans tes balises "code" avec ça? :D
 
Mais bon, peut-être que ce n'est pas grave pour tes "fixe" ?


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 20-11-2003 à 16:09:32    

Freekill a écrit :

Ouais, mais tu auras quand même des smiles et autres crasses dans tes balises "code" avec ça? :D
 
Mais bon, peut-être que ce n'est pas grave pour tes "fixe" ?

Oui parce que je voulais seulement des balises qui me permette de mettre des espaces insecables.


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 20-11-2003 à 16:09:32   

Reply

Marsh Posté le 20-11-2003 à 16:10:17    

respect pour les regex.
j'y comprend jamais rien et le max je que fait c'est ^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+.[a-zA-Z]+$ [:dawa]

Reply

Marsh Posté le 21-11-2003 à 20:33:10    

Merci freekill, finallement j'ai pris ton script car le miens ne marchais pas correctement :jap:


Message édité par forummp3 le 21-11-2003 à 20:33:22

---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Sujets relatifs:

Leave a Replay

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