Avatar billede thomas_b Nybegynder
21. oktober 2008 - 00:10 Der er 50 kommentarer og
1 løsning

Finde data i steng mellem <tbody> og </tbody>

Hvorfor virker dette script ikke ??

<%
set Req = Server.CreateObject("Msxml2.ServerXMLHTTP")
Req.open "GET", url, False
Req.Send
http = Req.responseText
%>

<%
tekst_1 = "<tbody>"
tekst_2 = "</tbody>"

tekst_1_pos=InStr(http,tekst_1)
tekst_2_pos=InStr(http,tekst_2)

tekst_1 = Left(http,tekst_1_pos)
tekst_2 = Right(http,tekst_2_pos)

http = Replace(http,tekst_1,"")
http = Replace(http,tekst_2,"")


Response.Write http
%>

Hvordan ændre jeg så den kan læse Æ Ø Å i denne streng?
Og hvordan for jeg fat i yderligere data i den streng der kommer?
f.eks. imellem dette tag : (<td valign="top">DATAtd>)
og så den ligesom køre i loop intil der ikke er flere...

Den skulle meget gerne lægge dem ind som streng1, streng2, streng3... osv...
Avatar billede tjp Mester
21. oktober 2008 - 11:14 #1
Er det noget a la dette, du har i tankerne? (ikke testet):

Set regEx = New RegExp       
regEx.Pattern = "<tbody>(.)</tbody>"     
regEx.IgnoreCase = True     
regEx.Global = True     
Set Matches = regEx.Execute(http)   
streng1 = Match.SubMatches(0)
Avatar billede coderdk Praktikant
21. oktober 2008 - 11:47 #2
regEx.Pattern = "<tbody>(.)</tbody>"

skal nok være

regEx.Pattern = "<tbody>(.?)</tbody>"

.NET er vel også grådig som default?
Avatar billede coderdk Praktikant
21. oktober 2008 - 11:48 #3
hov

regEx.Pattern = "<tbody>(.*?)</tbody>"

mente jeg
Avatar billede coderdk Praktikant
21. oktober 2008 - 11:48 #4
(.) vil ikke virke, da den jo kun matcher ét tegn ;P
Avatar billede tjp Mester
21. oktober 2008 - 11:52 #5
I know... en smutter. :-)
Avatar billede thomas_b Nybegynder
24. oktober 2008 - 02:35 #6
Så kommmer den med denne fejl...:

Object required: ''

på linien "streng1 = Match.SubMatches(0)"
Avatar billede coderdk Praktikant
24. oktober 2008 - 02:47 #7
Match bør være Matches
Avatar billede tjp Mester
24. oktober 2008 - 09:38 #8
Jeg skrev jo at det ikke var testet... ;-)

Men det her virker i hvert fald i VBA, når man refererer Microsoft VBScript Regular Expressions 5.5 i Tools:

Sub test()
    Dim http, regEx, matches, streng1, match
    http = "qwerty<tbody>asdf</tbody>åpoiu qwerty<tbody>jklæ</tbody>åpoiu"
    Set regEx = New RegExp
    regEx.Pattern = "<tbody>(.*?)</tbody>"
    regEx.IgnoreCase = True
    regEx.Global = True
    Set matches = regEx.Execute(http)
    For Each match In matches
        streng1 = match.SubMatches(0)
        Debug.Print streng1
    Next
End Sub
Avatar billede thomas_b Nybegynder
24. oktober 2008 - 10:32 #9
Den her giver ingen fejl... men den skriver ingen poster ud...:

Sub test()
    Dim http, regEx, matches, streng1, match
    http = "qwerty<tbody>asdf</tbody>åpoiu qwerty<tbody>jklæ</tbody>åpoiu"
    Set regEx = New RegExp
    regEx.Pattern = "<tbody>(.*?)</tbody>"
    regEx.IgnoreCase = True
    regEx.Global = True
    Set matches = regEx.Execute(http)
    For Each match In matches
        streng1 = match.SubMatches(0)
        Debug.Print streng1
    Next
End Sub
Avatar billede tjp Mester
24. oktober 2008 - 10:58 #10
Nej, men det er jo heller ikke asp. Det var bare et exempel til inspiration. ;-)
Avatar billede thomas_b Nybegynder
24. oktober 2008 - 11:25 #11
Ahha.. kigger lige lidt på det...
Kunne ikke lige umidbart se det ikke var asp :)
Men det virker halt om halt nu... skal lige rettes til... vender tilbage...
Avatar billede thomas_b Nybegynder
24. oktober 2008 - 21:35 #12
Det fungere ikke helt efter hensigten...!

Jeg skal have fat i informationerne nedenfor på denne side...: (http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=TS123456789DK)

30. marts 2006, 16:08, Data til forsendelse modtaget
31. marts 2006, 05:48, Ankommet til omdeling 7400 Herning
osv...

Den vil ikke finde data når jeg kommer med en værdi via.

<%
url = "http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=TS123456789DK"
set Req = Server.CreateObject("Msxml2.ServerXMLHTTP")
Req.open "GET", url, False
Req.Send
http = Req.responseText
%>
og den kan ikke æ, ø og å
Avatar billede tjp Mester
25. oktober 2008 - 01:22 #13
Så skulle det virke. Linjeskift voldte lidt problemer og den udokumenterede RegExp-property Multiline virker åbenbart ikke, men hacket [\w\W]* får vist det hele med. Det er stadig VBA, men der er ikke langt til ASP. ;-)

Sub test(http)
    Dim regEx, matches, streng1
    Set regEx = New RegExp
    regEx.Pattern = "<tbody>([\w\W]*)</tbody>"
    regEx.IgnoreCase = True
    regEx.Global = True
    Set matches = regEx.Execute(http)
    streng1 = matches(0).SubMatches(0)
    Debug.Print streng1
End Sub
Avatar billede thomas_b Nybegynder
25. oktober 2008 - 04:25 #14
det hjalp... Nu er der bare problemmet med at den ikke kan læse æ ø og å...!
Kan man ikke deencode den til dansk tegnsæt på en måde ?
Avatar billede coderdk Praktikant
25. oktober 2008 - 04:52 #15
Kig på System.Text.Encoding - du skal nok konvertere fra iso-8859-1 til utf8 går jeg ud fra...

og

regEx.Pattern = "<tbody>([\w\W]*)</tbody>"

kan rettes til

regEx.Pattern = "<tbody>(.*?)</tbody>"
regEx.Singleline = True
Avatar billede thomas_b Nybegynder
25. oktober 2008 - 10:49 #16
coderdk > Ang. System.Text.Encoding - kan du så ikke være lidt mere præsis da jeg ikke har været inde på det område før... evt. hvordan jeg implentere det?
Avatar billede coderdk Praktikant
25. oktober 2008 - 16:38 #17
Det er vist i øvrigt Encoding.Default du skal til... Det er lang tid siden jeg har rodet med .NET men prøv noget i stil med:

byte[] in;
byte[] out;
string ny_streng;
in = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(din_streng);
out = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding("ISO-8859-1"), System.Text.Encoding.Default, in);
ny_streng = System.Text.Encoding.Default.GetString(out);

Ellers prøv at kigge i MSDN, der er sikkert noget du kan bruge :)
Avatar billede thomas_b Nybegynder
25. oktober 2008 - 20:18 #18
coder > Jeg føler mig godt nok lidt lost på dette område...

Men den giver fejlen: (Expected statement) - på denne linie: (byte[] in;)

Når jeg indsætter:

url = "http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=TS123456789DK"
set Req = Server.CreateObject("Msxml2.ServerXMLHTTP")
Req.open "GET", url, False
Req.Send
http1 = Req.responseText

byte[] in;
byte[] out;
string http;
in = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(http1);
out = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding("ISO-8859-1"), System.Text.Encoding.Default, in);
http = System.Text.Encoding.Default.GetString(out);


Ville være super-glad hvis du lige kunne hjælpe mig lidt med dette... :)
Avatar billede coderdk Praktikant
25. oktober 2008 - 20:42 #19
sorry, jeg blander VB og C#

Prøv

Dim in() = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(http1)
Dim out() = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding("ISO-8859-1"), System.Text.Encoding.Default, in)
http = System.Text.Encoding.Default.GetString(out)

Jeg er selv lidt lost lige nu ;) Er det ASP eller ASP.NET du bruger?
Avatar billede thomas_b Nybegynder
25. oktober 2008 - 22:42 #20
asp :)
Avatar billede thomas_b Nybegynder
25. oktober 2008 - 22:44 #21
Denne fejl opstår ved den nye kode...! (Expected identifier)

ved den første linie...!
Avatar billede coderdk Praktikant
25. oktober 2008 - 23:12 #22
Så virker det nok ikke. Jeg antog at det var .NET
Avatar billede thomas_b Nybegynder
25. oktober 2008 - 23:18 #23
Hvad skal man så i asp ?
Avatar billede thomas_b Nybegynder
26. oktober 2008 - 00:13 #25
Jeg ved ikke lige hvordan... men kan man på en måde lave de evt. specialtegn (æøå) om til ASCII-tegn mens de hentes via:

url = "http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=TS123456789DK"
set Req = Server.CreateObject("Msxml2.ServerXMLHTTP")
Req.open "GET", url, False
Req.Send
http1 = Req.responseText

Som sagt jeg ved ikke om det kan lade sig gøre... men kan i finde en vej gennem...? :)
Avatar billede tjp Mester
26. oktober 2008 - 02:27 #26
Du kan jo evt. bare erstatte dem:
    http1 = Replace(http1, "&aelig;", "æ")
    http1 = Replace(http1, "&AElig;", "Æ")
    http1 = Replace(http1, "&oslash;", "ø")
    http1 = Replace(http1, "&Oslash;", "Ø")
    http1 = Replace(http1, "&aring;", "å")
    http1 = Replace(http1, "&Aring;", "Å")
Avatar billede thomas_b Nybegynder
26. oktober 2008 - 12:10 #27
tjp > Her prøvet dette, men kunne tænke mig til at det kun virkede hvis der var et æø eller å, her er der jo spørgsmålstejn...! pga. tegnsættet...! :(
Avatar billede thomas_b Nybegynder
27. oktober 2008 - 00:29 #28
Nu vil jeg skide til drastiske metoder... Hvis en af jer nu kunne PHP, kunne man så nemmere omforme det på den måde... Med det samme script osv... og så bare konvetere special-tegnene til ASCII-tegn og så inpotere via. asp...?

Ved det lydder lidt kringlet men det er kun til internt system, såå...? kunne det ikke være en løsning... (hvis en af jer kan PHP :))
Avatar billede coderdk Praktikant
27. oktober 2008 - 02:08 #29
Noget i denne stil?

<?php

header("Content-Type: text/plain;charset=utf-8");
$cnt = file_get_contents( "http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=TS123456789DK" );
$content = preg_replace("#^.*<tbody>(.*?)</tbody>.*$#si", "<table>\\1</table>", $cnt );
echo utf8_encode( $content );

?>
Avatar billede coderdk Praktikant
27. oktober 2008 - 02:09 #30
text/plain laves om til text/html hvis du vil vise indholdet i en browser, formatteret...
Avatar billede thomas_b Nybegynder
27. oktober 2008 - 22:27 #31
Er der nogle særlige krav til specs. på webhotellet ?
Avatar billede coderdk Praktikant
28. oktober 2008 - 09:20 #32
allow_url_fopen skal være on, ellers ikke :)
Avatar billede thomas_b Nybegynder
28. oktober 2008 - 15:09 #33
Kan ikke læse mig til det men tror du www.cliche.dk har det ?
Avatar billede olebole Juniormester
28. oktober 2008 - 15:14 #34
<ole>

Prøv:

<?php
$cnt = file_get_contents( "http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=TS123456789DK" );

print $cnt;
?>

Så ved du det  ;o)

/mvh
</bole>
Avatar billede thomas_b Nybegynder
28. oktober 2008 - 15:24 #35
Har endnu ikke afprøvet endnu, mangler webhotel... :)

Men...

Hvordan kan jeg som i asp, bruge (Request.QueryString("kode")) så jeg kan inpotere fra url'en ? - Altså hvordan den ville se ud i scriptet ?
Avatar billede coderdk Praktikant
28. oktober 2008 - 15:45 #36
Så bruger du: $_GET['kode']

:)
Avatar billede coderdk Praktikant
28. oktober 2008 - 15:48 #37
Jeg ved ikke om cliché har allow_url_fopen... men surftown har vist.
Avatar billede thomas_b Nybegynder
28. oktober 2008 - 16:25 #38
coderdk > hehe... er overhoved ikke php-mand, det er kun for dette script og så er jeg tilbage over hos asp :)

Hvis du kunne skrive scriptet om til mig, ville være super duper... :)
Avatar billede coderdk Praktikant
28. oktober 2008 - 16:37 #39
Se om du ikke kan bruge:

<?php

header("Content-Type: text/plain;charset=utf-8");
$cnt = file_get_contents( "http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=" . $_GET['kode'] );
$content = preg_replace("#^.*<tbody>(.*?)</tbody>.*$#si", "<table>\\1</table>", $cnt );
echo utf8_encode( $content );

?>

Den returnerer UTF-8 og indkapsler det i en <table>, hvis du vil vise det...
Avatar billede thomas_b Nybegynder
28. oktober 2008 - 16:47 #40
super... jeg kigger på det nu her når jeg har webhotellet i aften!

Skriver senere... :)
Avatar billede thomas_b Nybegynder
29. oktober 2008 - 02:44 #41
Det virker jo så... til dels :)

Hvordan for jeg denne funktion ind i mit php-script?

    http1 = Replace(http1, "&aelig;", "æ")
    http1 = Replace(http1, "&AElig;", "Æ")
    http1 = Replace(http1, "&oslash;", "ø")
    http1 = Replace(http1, "&Oslash;", "Ø")
    http1 = Replace(http1, "&aring;", "å")
    http1 = Replace(http1, "&Aring;", "Å")

Så tror jeg faktisk også den er færdig :) efter det hvert fald
Avatar billede coderdk Praktikant
29. oktober 2008 - 09:06 #42
Prøv:

<?php

header("Content-Type: text/plain;charset=utf-8");
$cnt = file_get_contents( "http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=" . $_GET['kode'] );
$content = preg_replace("#^.*<tbody>(.*?)</tbody>.*$#si", "<table>\\1</table>", $cnt );
$content = html_entity_decode( $content );
echo utf8_encode( $content );

?>
Avatar billede thomas_b Nybegynder
29. oktober 2008 - 13:40 #43
Ja... men stadig... jeg skal bruge denne funktion :)

    http1 = Replace(http1, "&aelig;", "æ")
    http1 = Replace(http1, "&AElig;", "Æ")
    http1 = Replace(http1, "&oslash;", "ø")
    http1 = Replace(http1, "&Oslash;", "Ø")
    http1 = Replace(http1, "&aring;", "å")
    http1 = Replace(http1, "&Aring;", "Å")
Avatar billede coderdk Praktikant
29. oktober 2008 - 13:45 #44
html_entity_decode burde producere samme resultat ;)
Avatar billede coderdk Praktikant
29. oktober 2008 - 13:46 #45
ellers er syntaksen

$http = str_replace( "&aelig;", "æ", $http );
Avatar billede thomas_b Nybegynder
29. oktober 2008 - 14:06 #46
mit script ser nu sådan ud...: - og det virker stadig ikke :(

header("Content-Type: text/plain;charset=utf-8");
$cnt = file_get_contents( "http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=" . $_GET['kode'] );
$content = preg_replace("#^.*<tbody>(.*?)</tbody>.*$#si", "<table>\\1</table>", $cnt );
$content = str_replace( "&aelig;", "æ", $content );
$content = str_replace( "&AElig;", "Æ", $content );
$content = str_replace( "&oslash;", "ø", $content );
$content = str_replace( "&Oslash;", "Ø", $content );
$content = str_replace( "&aring;", "å", $content );
$content = str_replace( "&Aring;", "Å", $content );
$content = html_entity_decode( $content );
echo utf8_encode( $content );
Avatar billede thomas_b Nybegynder
29. oktober 2008 - 14:29 #47
fandt løsningen... :)
Avatar billede coderdk Praktikant
29. oktober 2008 - 14:48 #48
cool :)
Avatar billede thomas_b Nybegynder
29. oktober 2008 - 15:31 #49
jeg siger 1000 tak for hjælpen alle sammen...

nogle der har indvinger til hvis coderdk for alle point da php-scripet virkede ?
Avatar billede olebole Juniormester
29. oktober 2008 - 16:05 #50
Ikke det ringeste herfra  =)
Avatar billede tjp Mester
29. oktober 2008 - 17:36 #51
Overlever nok... ;-)
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