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...
Annonceindlæg tema
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)
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?
21. oktober 2008 - 11:48
#3
hov regEx.Pattern = "<tbody>(.*?)</tbody>" mente jeg
21. oktober 2008 - 11:48
#4
(.) vil ikke virke, da den jo kun matcher ét tegn ;P
21. oktober 2008 - 11:52
#5
I know... en smutter. :-)
24. oktober 2008 - 02:35
#6
Så kommmer den med denne fejl...: Object required: '' på linien "streng1 = Match.SubMatches(0)"
24. oktober 2008 - 02:47
#7
Match bør være Matches
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
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
24. oktober 2008 - 10:58
#10
Nej, men det er jo heller ikke asp. Det var bare et exempel til inspiration. ;-)
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...
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
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 ?
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
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?
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 :)
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... :)
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?
25. oktober 2008 - 22:42
#20
asp :)
25. oktober 2008 - 22:44
#21
Denne fejl opstår ved den nye kode...! (Expected identifier) ved den første linie...!
25. oktober 2008 - 23:12
#22
Så virker det nok ikke. Jeg antog at det var .NET
25. oktober 2008 - 23:18
#23
Hvad skal man så i asp ?
25. oktober 2008 - 23:27
#24
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...? :)
26. oktober 2008 - 02:27
#26
Du kan jo evt. bare erstatte dem: http1 = Replace(http1, "æ", "æ") http1 = Replace(http1, "Æ", "Æ") http1 = Replace(http1, "ø", "ø") http1 = Replace(http1, "Ø", "Ø") http1 = Replace(http1, "å", "å") http1 = Replace(http1, "Å", "Å")
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...! :(
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 :))
27. oktober 2008 - 02:09
#30
text/plain laves om til text/html hvis du vil vise indholdet i en browser, formatteret...
27. oktober 2008 - 22:27
#31
Er der nogle særlige krav til specs. på webhotellet ?
28. oktober 2008 - 09:20
#32
allow_url_fopen skal være on, ellers ikke :)
28. oktober 2008 - 15:09
#33
Kan ikke læse mig til det men tror du
www.cliche.dk har det ?
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 ?
28. oktober 2008 - 15:45
#36
Så bruger du: $_GET['kode'] :)
28. oktober 2008 - 15:48
#37
Jeg ved ikke om cliché har allow_url_fopen... men surftown har vist.
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... :)
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...
28. oktober 2008 - 16:47
#40
super... jeg kigger på det nu her når jeg har webhotellet i aften! Skriver senere... :)
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, "æ", "æ") http1 = Replace(http1, "Æ", "Æ") http1 = Replace(http1, "ø", "ø") http1 = Replace(http1, "Ø", "Ø") http1 = Replace(http1, "å", "å") http1 = Replace(http1, "Å", "Å") Så tror jeg faktisk også den er færdig :) efter det hvert fald
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 );
?>
29. oktober 2008 - 13:40
#43
Ja... men stadig... jeg skal bruge denne funktion :) http1 = Replace(http1, "æ", "æ") http1 = Replace(http1, "Æ", "Æ") http1 = Replace(http1, "ø", "ø") http1 = Replace(http1, "Ø", "Ø") http1 = Replace(http1, "å", "å") http1 = Replace(http1, "Å", "Å")
29. oktober 2008 - 13:45
#44
html_entity_decode burde producere samme resultat ;)
29. oktober 2008 - 13:46
#45
ellers er syntaksen $http = str_replace( "æ", "æ", $http );
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( "æ", "æ", $content );
$content = str_replace( "Æ", "Æ", $content );
$content = str_replace( "ø", "ø", $content );
$content = str_replace( "Ø", "Ø", $content );
$content = str_replace( "å", "å", $content );
$content = str_replace( "Å", "Å", $content );
$content = html_entity_decode( $content );
echo utf8_encode( $content );
29. oktober 2008 - 14:29
#47
fandt løsningen... :)
29. oktober 2008 - 14:48
#48
cool :)
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 ?
29. oktober 2008 - 16:05
#50
Ikke det ringeste herfra =)
29. oktober 2008 - 17:36
#51
Overlever nok... ;-)
Kurser inden for grundlæggende programmering