Avatar billede bossen2k Nybegynder
05. oktober 2001 - 01:19 Der er 9 kommentarer og
1 løsning

Fjern web og email adresser fra tekst i et text area

Er der nogle der har prøvet at få fjernet web og email adresser fra et text area, et tekst filter om man vil ?????
Avatar billede eagleeye Praktikant
05. oktober 2001 - 09:05 #1
Hvordan skal web og email adresser fjernes, skal de helt fjernes fra teksten eller er det kun html-koden som laver linket <a href=.....</a> ?

tekst: \"Se min hjemmeside <a href=www.min.dk>www.min.dk</a>.
skal blive til:
Se min hjemmeside www.min.dk.
Eller:
Se min hjemmeside.
Avatar billede eagleeye Praktikant
05. oktober 2001 - 09:07 #2
Se min hjemmeside www.min.dk.    er et link (her på eksperten) pga eksperten automatisk laver web-adresser om til link. så det er sådan her
Se min hjemmeside <web-adresse>.    <web-adresse> er ikke et link.
Avatar billede neuro Nybegynder
05. oktober 2001 - 10:22 #3
du kan jo anvende Instr funktionen til at søge efter noget i en tekst. og Replace for så at fjerne det :) med disse to kan du nemt lave et effektivt tekst filter.
Avatar billede bossen2k Nybegynder
05. oktober 2001 - 14:27 #4
for lige at udspecificere:

Web og email adresser skal helt fjernes fra text area ved submit også selvom der ikke står \"http://\" og \"mailto\" foran.
Avatar billede eagleeye Praktikant
05. oktober 2001 - 14:40 #5
Function LinkRemoveString(strInput)
  Set objRegExpHTTP1 = New RegExp
  Set objRegExpHTTP2 = New RegExp
  Set objRegExpEMail = New RegExp

  objRegExpHTTP1.Pattern = \"(http|ftp)(:\\/\\/[\\w\\._-]+\\.[\\w\\._-]+\\S*)\"
  objRegExpHTTP2.Pattern = \"(^|[^\\/])(www[^\\.\\s]?\\.[\\w\\._-]+\\.[A-Za-z]{2,3}\\S*)\"
  objRegExpEMail.Pattern = \"([\\w\\._-]+@[\\w\\._-]+\\.[A-Za-z]{2,3}\\S*)\"

  objRegExpHTTP1.Global = True
  objRegExpHTTP2.Global = True
  objRegExpEMail.Global = True

  objRegExpHTTP1.IgnoreCase = True
  objRegExpHTTP2.IgnoreCase = True
  objRegExpEMail.IgnoreCase = True

  strOutput = objRegExpEMail.Replace(strInput, \"\")
  strOutput = objRegExpHTTP1.Replace(strOutput, \"\")
  strOutput = objRegExpHTTP2.Replace(strOutput, \"\")

  Set objRegExpHTTP2 = Nothing
  set objRegExpHTTP1 = Nothing
  Set objRegExpEMail = Nothing

  LinkString = strOutput
  End Function

Jeg har ikke testet den, da jeg ikke lige har mulighed lige nu. Det er en function som jeg har brugt til det modsatte hvis folk skrev en web eller email adresse laves den det om til et link. Så jeg har lavet replace om til \"\" tom vis den finder en web eller email adresse.

Prøv at test med:

<%=LinkRemoveString (\"Web adress ww.dk.dk og min mail adresse er e@dk.dk\")%>

Hvis den virker er det så sådan noget?
Avatar billede eagleeye Praktikant
05. oktober 2001 - 14:41 #6
der skal 3 www i web adressen.
<%=LinkRemoveString (\"Web adress eww.dk.dk og min mail adresse er e@dk.dk\")%>

Avatar billede eagleeye Praktikant
05. oktober 2001 - 14:42 #7
Jeg skal vist tage hjem og sove for det går da ikke så godt :)
<%=LinkRemoveString (\"Web adress www.dk.dk og min mail adresse er e@dk.dk\")%>

Avatar billede neuro Nybegynder
06. oktober 2001 - 00:18 #8
den der regular expression ser ret interessant ud ... er det muligt man kan få opskriften .. hehe .. aj, men vil godt lige have en nærmere forklaring på det, om muligt?
Avatar billede eagleeye Praktikant
06. oktober 2001 - 13:14 #9
neuro>>
Pattern er en streng som man kan sætte RegExp objectet til at søge efter. Den er god hvis man skal søge på noget som har en defineret struktur men ikke fast indhold eks.vis links. Et link kan være www.hjem.dk det kan også være www.net.spil.gamle.dk så kan man med pattern finde dem.
Et pattern er mellem (), og det kan være mange pattern efter hinanden og de kan referes med nummer i replace functionen $1..$n


Jeg kan tage det modsatte eks:
objRegExpHTTP1.Pattern = \"(http|ftp)(:\\/\\/[\\w\\._-]+\\.[\\w\\._-]+\\S*)\"
(http|ftp) : leder efter enten http eller ftp.
(:\\/\\/[\\w\\._-]+\\.[\\w\\._-]+\\S*) : leder efter ://
\\w er alle bogstaver a-z,0-9 (ikke www i linket)
\\._- finder . eller _ eller -
[] omkring [\\w\\._-] betyder en samling karakter
+ betyder find en eller mange gange i træk.

Så det til at skifter med replace, denne linie sætter et link ind hvis det adresse findes i teksten(altså det modsatte af dette spm):
hvis man har skrevet http://www.dr.dk
strOutput = objRegExpHTTP1.Replace(strOutput, \" <a href=\'$1$2\' target=\'_blank\'>$1$2</a> \")
$1=http  :http eller ftp
$2=://www.dr.dk

resultatet bliver:
<a href=\'http://www.dr.dk\' taget=\'_blank\'>http://www.dr.dk</a>

Her er et link til Pattern:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vspropattern.asp

Håber det hjalp dig lidt på vej.
Avatar billede eagleeye Praktikant
06. oktober 2001 - 13:22 #10
Nu har jeg lige testes functionen og er det er en fejl i sidste linie:

Function LinkRemoveString(strInput)
  Set objRegExpHTTP1 = New RegExp
  Set objRegExpHTTP2 = New RegExp
  Set objRegExpEMail = New RegExp
 
  objRegExpHTTP1.Pattern = \"(http|ftp)(:\\/\\/[\\w\\._-]+\\.[\\w\\._-]+\\S*)\"
  objRegExpHTTP2.Pattern = \"(^|[^\\/])(www[^\\.\\s]?\\.[\\w\\._-]+\\.[A-Za-z]{2,3}\\S*)\"
  objRegExpEMail.Pattern = \"([\\w\\._-]+@[\\w\\._-]+\\.[A-Za-z]{2,3}\\S*)\"

  objRegExpHTTP1.Global = True
  objRegExpHTTP2.Global = True
  objRegExpEMail.Global = True

  objRegExpHTTP1.IgnoreCase = True
  objRegExpHTTP2.IgnoreCase = True
  objRegExpEMail.IgnoreCase = True

  strOutput = objRegExpEMail.Replace(strInput, \"\")
  strOutput = objRegExpHTTP1.Replace(strOutput, \"\")
  strOutput = objRegExpHTTP2.Replace(strOutput, \"\")

  set objRegExpHTTP1 = Nothing
  Set objRegExpHTTP2 = Nothing
  Set objRegExpEMail = Nothing

  LinkRemoveString = strOutput
End Function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester