1. <?
  2. function change($text){
  3. $text = preg_replace('#\[url=(.*?) s\](.*?)\[/url\]#si', ' <a href="\\1">\\2</a>', $text);
  4. $text = preg_replace('#\[url=(.*?)\](.*?)\[/url\]#si', ' <a href="\\1" target="blank">\\2</a>', $text);
  5. return $text;
  6. }
  7.  
  8. echo change('
  9. [u rl=link1 s]tytul1[/url]
  10. [u rl=link2]tytul2[/url]
  11. [u rl=link3]tytul3[/url]
  12. [u rl=link4 s]tytul4[/url]
  13. [u rl=link5 s]tytul5[/url]
  14. ');
  15. ?>


W funkcji change mam dwie instrukcje, pierwsza szuka [url] z dodatkiem "s", oznaczającym "self", czyli otworzenie się linku w tym samym oknie; bez tego "s" ma otwierać się w nowym, jednak druga instrukcja jest ciągle ignorowana, przez co dochodzi do dziwnych wyników, niszczących kod html..

PS: w zawartości tagów specjalnie dodałem spację między "u" a "rl", bo inaczej przeszłoby to przez funckje tego forum