Hej

Od razu przejdę do rzeczy. Mam problem z wyrażeniami regularnymi, podam od razu kod i wytłumaczę o co chodzi:

  1. $text = "lol lol @luknik lol #SuperMuzykaTechno lol tuxpaint.org/stamps/stamps/animals/...cartoon/tux.png lol www.wp.pl";
  2.  
  3.  
  4. $text = str_replace('http://','',$text); //1
  5. $text = preg_replace(
  6. '#([^ \'\"\<]+?[^ \'\"\.\<]+\.(pl|com|eu|info|biz|tv|net|org|tk)\.*(pl|com|eu|info|biz|tv|net|org|tk)*(\/[^ \'\"\<]+)?)#',
  7. '<a href="http://\\1" target="_blank" rel="nofollow">\\1</a>',$text); //2
  8. $text = preg_replace('#<a(.*?)(?:href="http?://)((.*?)(?:\.jpg|\.png|\.gif)).*<\/a>#', '<a href="http://\\2"><img src="http://\\2" width="300" /></a>', $text); //3
  9. $text = preg_replace('/@(\w*)/','<a href="profil.php?@=\1">@\1</a>',$text); //4
  10. $text = preg_replace('/\#(\w*)/','<a href="tag.php?tag=\1">#\1</a>',$text); //5
  11.  
  12.  
  13. echo $text.'<br /><br />';


A więc tak w tym kodzie prawie wszystko jest ok, a problem tkwi w połączeniu wyrażeń odpowiedzialnych za tworzenie linków oraz pokazywanie obrazów (oznaczone jako '2' i '3'). Kiedy są osobno to wszystko ładnie działa... Jak w zmiennej $text jest albo link normalny albo zakończony na rozszerzenie graficzne to też wszystko działa. Niestety kiedy w $text są zmieszane linki do stron i do obrazów zaczyna się wszystko krzaczyć... Linki nadal działają ale z obrazami dzieją się cyrki... Pokazuje tak jakby pusty obraz i zaraz po nim ponownie link do strony.

Proszę o pomoc bo już trochę nad tym siedzę i nie bardzo wiem o co chodzi, a wyrażenia regularne to nie jest moja mocna strona.

EDIT: Jeszcze dodam, że ważną rolę gra gdzie pojawi się link do strony. Jeśli będzie przed linkiem do obrazu to występuje to co opisałem wcześniej, a jeśli po to wszystko zatrzymuje się na obrazie i dalej zmienna jest pusta, albo jej nie wyświetla