Avatar billede dan_n Nybegynder
20. juli 2004 - 14:29 Der er 5 kommentarer og
1 løsning

Isolering af dele af tekst mellem fx html kommentar-tags

Er der nogle som ved hvordan man ved hjælp af asp,
kan isolere visse dele af et html dokument.

Hvis mit dokument fx ser således ud:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">
<head>
    <title></title>

</head>
<body>

<!-- START -->
Denne tekst skal isoleres

<!-- SLUT-->

</body>
</html>

Kan jeg så gennemlæse dokumentet og isolere det tekst som står mellem <!-- START --> og <!-- SLUT--> altså så
outputtet bliver således:

Denne tekst skal isoleres


Mit eget bud på være et eller andet med nogle  Regular expressions, men jeg har absolut ingen anelse om hvordan
jeg kommer i gang, da  Regular expressions absolut ikke er mit stærkeste punkt ?

Håber der er nogle exp's som har et bud
Avatar billede yellow Nybegynder
20. juli 2004 - 15:32 #1
Som regular expression:
strHtml = "blablabla<!--START-->Denne tekst skal isoleres<!--SLUT-->blablabla"
Set regEx = New RegExp   
regEx.Pattern = ".*<!--START-->(.*)<!--SLUT-->.*"
strIso = regEx.Replace( strHtml, "$1" )
Set regEx = nothing
Response.Write strIso

Uden regular expression
strHtml = "blablabla<!--START-->Denne tekst skal isoleres<!--SLUT-->blablabla"
strIso = ""
startPos = instr( strHtml,"<!--START-->")
endPos = instr( strHtml,"<!--SLUT-->")
if startPos > 0 and endPos > 0  then
  startPos = startPos + Len("<!--START-->")
  strIso = Mid( strHtml,startPos,endPos-startPos)
end if
Response.Write strIso
Avatar billede dan_n Nybegynder
20. juli 2004 - 21:16 #2
Max verdensklasse !! præcis hvad jeg søgte efter.

Desværre virker regEX ikke i mit dokument. Gider du tage et kig:
Jeg henter htmldokumentet id hva MS komp. objXMLHTTP således:

http://skitips.dk/exp/reg.asp
<%
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://skitips.dk/exp/edit.htm", False
objXMLHTTP.Send

strHtml= objXMLHTTP.responseText

Set regEx = New RegExp 
regEx.Pattern = ".*<!--START-->(.*)<!--SLUT-->.*"
strIso = regEx.Replace( strHtml, "$1" )
Set regEx = nothing
Response.Write strIso
%>


ja og html filen kan findes her:

http://skitips.dk/exp/edit.htm

Jeg har prøvet lidt af hvert men kan absolut ikke få det til at filtrere noget fra i ovenstående dokument. Jeg har prøvet med andre dokumenter også asp, men her virker det fint, mystisk ??
Avatar billede yellow Nybegynder
21. juli 2004 - 02:41 #3
Prøv med:
**************************************************************
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://skitips.dk/exp/edit.htm", False
objXMLHTTP.Send

strHtml= objXMLHTTP.responseText

Set regEx = New RegExp 
regEx.Global = True
regEx.Pattern = "<!--START-->.*?<!--SLUT-->"
Set Matches = regEx.Execute(replace( strHtml, vbCrLf,"" ))
For Each Match in Matches
  strIso = Mid(Match.Value, 13, Len(Match.Value) - 23)
  Response.Write strIso
Next
**************************************************************
Den skulle gerne fange begge dine start-slut "tags" og lave 2xResponse.Write
Avatar billede dan_n Nybegynder
21. juli 2004 - 08:25 #4
Super, det virker. havde selv tænkt lidt på det med linie skift, og tabs. men vidste ikke lige hvordan jeg skulle gribe det an.

Smid lige et svar så får du nogle velfortjente points ?
Avatar billede yellow Nybegynder
21. juli 2004 - 11:32 #5
Takker :-)
Avatar billede dan_n Nybegynder
21. juli 2004 - 19:49 #6
Selv Tak
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