[JS] probl. met replace script voor links in tekst

Pagina: 1
Acties:

  • marqvds
  • Registratie: Oktober 2003
  • Laatst online: 12-02 15:54
Ik gebruik al een tijdje een script om links in teksten om te zetten in klikbare links.
Deze werkt uitstekend alleen heeft hij problemen met emailadressen waar een punt in voorkomt.

Ik kan aardig overweg met javascript alleen hier kom ik niet uit.

Dit is de functie:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function edit_hrefs(s_html){
s_str = new String(s_html);

s_str = s_str.replace(/\bhttp\:\/\/www(\.[\w+\.\:\/\_]+)/gi,
"http\:\/\/¬¤¸$1");

s_str = s_str.replace(/\b(http\:\/\/\w+\.[\w+\.\:\/\_]+)/gi,
"<a href=\"$1\" target=\"_blank\">$1<\/a>");

s_str = s_str.replace(/\b(www\.[\w+\.\:\/\_]+)/gi,
"<a href=\"http://$1\" target=\"_blank\">$1</a>");

s_str = s_str.replace(/\bhttp\:\/\/¬¤¸(\.[\w+\.\:\/\_]+)/gi,
"<a href=\"http\:\/\/www$1\" target=\"_blank\">www$1</a>");

[b]s_str = s_str.replace(/\b(\w+@[\w+\.?]*)/gi,"<a href=\"mailto\:$1\">$1</a>");[/b]

return s_str;
}


Het emailadres mark@tweakers.net wordt netjes omgezet in < a href="mailto:mark@tweakers.net">mark@tweakers.net</a> maar mark.s@tweakers.net werkt dus niet (wordt mark.< a href="mailto:s@tweakers.net">s@tweakers.net</a>)

Kan iemand mij helpen dit script aan te passen zodat deze ook overweg kan met emailadressen met een punt?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

\w = [a-zA-Z0-9_]
lijkt me dus duidelijk (en het gebruik van de [code=js]-tag had jouw post ook duidelijker gemaakt ;) )

Intentionally left blank


  • marqvds
  • Registratie: Oktober 2003
  • Laatst online: 12-02 15:54
crisp schreef op woensdag 13 september 2006 @ 23:50:
\w = [a-zA-Z0-9_]
lijkt me dus duidelijk (en het gebruik van de [code=js]-tag had jouw post ook duidelijker gemaakt ;) )
Bedankt, ik heb het even uitgetest maar dit werkt bij mij ook niet.
Misschien iemand nog een andere tip?

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
marqvds schreef op donderdag 14 september 2006 @ 08:45:
Misschien iemand nog een andere tip?
Ik geloof dat er bedoeld wordt dat je \w gebruikt en dat dit hetzelfde is als [a-zA-Z0-9_]. Zover ik dat zie komt er in die sequentie dus geen puntje in voor en zal de expressie enkel het gedeelte tussen punt en apenstaart weergeven.

Je zal je expressie dus moeten aanpassen zodat er ook puntjes in mogen.

[ Voor 8% gewijzigd door moozzuzz op 14-09-2006 08:58 ]


  • Glabbeek
  • Registratie: Februari 2001
  • Laatst online: 12-02 11:54

Glabbeek

Dat dus.

Je moet inderdaad de punt ook toevoegen aan de valid characters voor de @. Trouwens, de - (hypen) is ook een valid character, die heb je ook nog niet staan. Zie ook http://www.remote.org/jochen/mail/info/chars.html

Uiteindelijk kom ik op:
JavaScript:
1
s = s.replace(/\b([\w+-\.?]+@[\w+-\.?]+)/gi,"<a href=\"mailto\:$1\">$1</a>");

En zo is het maar net.


  • marqvds
  • Registratie: Oktober 2003
  • Laatst online: 12-02 15:54
Bedankt voor jullie hulp!

Dit werkt zonder problemen.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

en niet escaped minteken in een characterclass duidt een range aan. Verder hoef je je punt in een characterclass niet te escapen:
code:
1
[\w+.?-]

zal beter werken denk ik ;)

Intentionally left blank

Pagina: 1