Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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ć?


--------------------
„Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
Go to the top of the page
+Quote Post

Posty w temacie
- WebCM   Wyszukiwanie linków - podwójna zamiana   24.09.2013, 01:52:25


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

 



RSS Aktualny czas: 22.08.2025 - 03:40