Aidez moi a completer cette Expression régulière

Aidez moi a completer cette Expression régulière - PHP - Programmation

Marsh Posté le 10-10-2002 à 22:09:49    

Pour une expression régulière qui sert a formatter le code UBB d'un forum :

Code :
  1. $topic = 'wazza';
  2. $topic=eregi_replace(
  3. "([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",
  4. "<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\">\\1://\\2\\3</A>",
  5. $topic);


Comment completer l'expression régulière pour que ca ne marche que si il n'y a pas [url] ou [url devant l'url (comme sur l'exemple) ?
 
Merci :-)


Message édité par Castor666 le 10-10-2002 à 22:10:34

---------------
Mon blog de nerd...
Reply

Marsh Posté le 10-10-2002 à 22:09:49   

Reply

Marsh Posté le 11-10-2002 à 07:03:09    

up du matin [:huit]


---------------
Mon blog de nerd...
Reply

Marsh Posté le 11-10-2002 à 12:58:24    

up du midi


---------------
Mon blog de nerd...
Reply

Marsh Posté le 11-10-2002 à 19:03:02    

up du soir


---------------
Mon blog de nerd...
Reply

Marsh Posté le 11-10-2002 à 22:29:18    

up de nuit (j'ai le temps..)


---------------
Mon blog de nerd...
Reply

Marsh Posté le 11-10-2002 à 23:17:17    

bouge pas, je te ramene ca, je lai fait cette semaine ...

Reply

Marsh Posté le 11-10-2002 à 23:36:20    

jai un leger doute concernant ta requete du fait du :
pour que ca ne marche que si il n'y a pas
 
donc je suppose malgré tt que tu veux transformer

Code :
  1. google
  2. en
  3. <a href="http://www.google.fr" target="new">google</a>


 
donc moi jai une expression en perl par contre qui fait

Code :
  1. [url link=htpp://www.google.fr]google[/url] ou
  2. [url link=www.google.fr]google[/url]
  3. en
  4. <a href="http://www.google.fr" target="new">google</a>


 

Code :
  1. $search = array ("'\[i\]([^\[]*)\[\/i\]'si",
  2.   "'\[g\]([^\[]*)\[\/g\]'si",
  3.   "'\[url link=(http:\/\/){0,1}([^\]]*)\]([^\[]*)\[\/url\]'si",
  4.   "'\r'si"
  5.  );
  6.                
  7. $replace = array ("<i>\\1</i>",
  8.    "<b>\\1</b>",
  9.    "<a href=\"http://\\2\" target=\"new\">\\3</a>",
  10.    "<p>"
  11.   );
  12. return preg_replace ($search, $replace, $texte);


Message édité par beleg le 11-10-2002 à 23:38:34
Reply

Marsh Posté le 12-10-2002 à 16:07:52    

En faite, il si il y a [url] ou [url=avant l'adresse, il ne faut pas que ca rajoute les balise.
 
Donc ton script doit marcher (mais je connai pas trop le perl) mais ce n'est pas ce qu'il me faut.
Merci quand même de ton interessement ;)


---------------
Mon blog de nerd...
Reply

Marsh Posté le 12-10-2002 à 16:56:00    

Vous jsais pas ... mais moi ... g rien compris  :??:


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 12-10-2002 à 17:25:28    

Bah si ta rien compris, tu fait comme les autres, tu répond pas  :sarcastic:  
Tu sais ce qu'est une expression régulière, non ?


---------------
Mon blog de nerd...
Reply

Marsh Posté le 12-10-2002 à 17:25:28   

Reply

Marsh Posté le 12-10-2002 à 20:08:46    

castor666 a écrit a écrit :

Bah si ta rien compris, tu fait comme les autres, tu répond pas  :sarcastic:  
Tu sais ce qu'est une expression régulière, non ?




 
Oui, c'est le genre d'expression qu'on utilise pour faire une recherche ds un texte (par exemple).
 
Mais si j'ai dis que j'ai rien compris, c t + pour que tu reexplique, et non seulement pour faire un commentaire ... c tout :)
 
 
Edit : Pas la peine de m'accueillir avec un  :sarcastic:


Message édité par Dj YeLL le 12-10-2002 à 20:09:04

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 13-10-2002 à 01:51:29    

du coup tu veux remplacer
 
xxxx http://zzzzz.zzz yyyyy
par
<a href="http://zzzzz.zzz">http://zzzzz.zzz</a>
 
avec xxxx qui se termine pas par [url ou [url]
 
yo,  
 
"http://([^[:space:]]*)([[:alnum:]#?/&=])\.([:alnum:]*)[:space:]",  
"<A HREF=\"\\1://\\2\\3.\\4\" TARGET=\"_blank\">\\1://\\2\\3.\\4</A>",  
 
jessaie de trouver un http//*******.*** . Mais pas moyen de verifier quil ny a pas url autour ... le but des balises est justement de reperer le texte, ce qui nest pas evident sans. Ce que tu demandes va un peu a lencontre de lutlisation des regexp.
et dailleurs ce que jai ecrit, je ne pense pas que ca soit juste ... vu quil y a pas les balises pr limiter, ca risque de produire des resultats assez spectaculaires  :lol: .

Reply

Marsh Posté le 13-10-2002 à 01:52:20    

demande a joce, il y arrive tres bien, mon url est devenu un lien.

Reply

Marsh Posté le 13-10-2002 à 13:08:00    

Le code que j'ai donner marche parfaitement, mais le probleme, c'est que le UBB a 3 possibilité pour creer  un lien :

Code :
  1. <?
  2. $topic = 'wazza';
  3. /*
  4. $topic = 'http://tamere.com/';
  5. $topic = 'http://tamere.com';
  6. */
  7. //UBB de type1 : wazza
  8. $topic=eregi_replace(
  9. "(\[url=+)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])]([[:alnum:]]+)(\[/url\])",
  10. "<A HREF=\"\\2://\\3\\4\" TARGET=\"_blank\">\\5</A>",
  11. $topic);
  12. //UBB de type2 : http://tamere.com/
  13. $topic=eregi_replace(
  14. "(\[url\]+)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])(\[/url\])",
  15. "<A HREF=\"\\2://\\3\\4\" TARGET=\"_blank\">\\2://\\3\\4</A>",
  16. $topic);
  17. //UBB de type3 : http://tamere.com/
  18. $topic=eregi_replace(
  19. "([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",
  20. "<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\">\\1://\\2\\3</A>",
  21. $topic);
  22. echo $topic;
  23. ?>


Le probleme, c'est que la chaine est traité par le UBB de type1 (ca c'est ok) mais aussi par le UBB de type3, ce qui donne :

Citation :

<A HREF="<A HREF="http://tamere.com/" TARGET="_blank">http://tamere.com/</A>" TARGET="_blank">wazza</A>


L'url a été traité 2fois. (donc problème)
Comment faire pour que le UBB de type3 ne traite pas la variable une deuxieme fois?


---------------
Mon blog de nerd...
Reply

Marsh Posté le 13-10-2002 à 13:58:40    


 
//UBB de type3 : http://tamere.com/  
  $topic=eregi_replace(  
  "[:space:]([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])[:space:]",  
  "<A HREF=\"\\1://\\2\\3\" TARGET=\"_blank\">\\1://\\2\\3</A>",  
  $topic);  
   
   
sachant que les urls traités par type1 et type2 sont entourés par " ou finissent par </a>, dont tu remplaces que les urls entourées d'espaces vide  :??: .

Reply

Marsh Posté le 13-10-2002 à 15:06:30    

Je te roulerai bien une pelle mais ma moman ma dit de pas rouler de pelles aux inconnus :D
Merci beacoup, ca va me permettre de finir en grande parti mon forum ;)


---------------
Mon blog de nerd...
Reply

Sujets relatifs:

Leave a Replay

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