Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwanie linków - podwójna zamiana, Jak tego uniknąć?
WebCM
post
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Piszę podgląd BBCode, a jednym z elementów jest zamiana linków na kod HTML. Niestety, linki są zamieniane podwójnie, w wyniku czego na wyjściu otrzymujemy:
Kod
Witaj świecie http://www.onet.pl">www.onet.pl a teraz http://wp.pl">WP!!!
Wejściowy ciąg znaków
Kod
Witaj świecie www.onet.pl a teraz [url=http://wp.pl]WP[/url]!!!
Kod JavaScript odpowiedzialny za ww. operację jest następujący:
[JAVASCRIPT] pobierz, plaintext
  1. var furl = function(match,txt)
  2. {
  3. var url = txt;
  4. if(url.indexOf('www.')===0) url = 'http://'+url;
  5. if(txt.length>30) txt = txt.substr(0,21)+'...'+txt.substr(-8);
  6. return txt.link(url)
  7. };
  8. var ffurl = function(match,url,txt)
  9. {
  10. if(url.indexOf('www.')===0) url = 'http://'+url;
  11. return txt.link(url)
  12. }
  13. text = text.replace(/\[color=([A-Za-z0-9#].*?)\](.*?)\[\/color\]/gi, '<span style="color:$1">$2</span>');
  14. text = text.replace(/\[url]([^\]].*?)\[\/url\]/gi, furl);
  15. text = text.replace(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, ffurl);
  16. text = text.replace(/(www\.[a-z0-9\-]+\.[a-z0-9\-.\~,\?!%\*_\#:;~\\&$@\/=\+]*)(?!["<]+?)/gi, furl);
  17. text = text.replace(/(http+s?:\/\/[a-z0-9\-]+\.[a-z0-9\-.\~,\?!%\*_\#:;~\\&$@\/=\+]*)(?!["<]+?)/gi, furl);
[JAVASCRIPT] pobierz, plaintext

Dodałem kwantyfikator (?!["<]+?) ale obcina tylko ostatnią literkę adresu. Zmiana kolejności też nie pomaga. Jak poprawić powyższy kod, aby linki były zamieniane prawidłowo? Czy da się go uprościć?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:00