Seite 2 von 3
Verfasst: 25.04.2007 17:39
von Tsuki-Namida
super das klapt

AND51 danke euchb allen

Verfasst: 25.04.2007 17:42
von Kaeru Gaman
AND macht da auch nix anderes, als von mir vorgeschlagen:
er sucht "Current Song", dann sucht er das nächste "<b>",
und dann schnibbelt er bis zum folgenden "</b>" aus.
ok, er hats vereinfacht, indem er nur die nächsten b-tags sucht.
schon ok, gute arbeit, AND.

Verfasst: 25.04.2007 17:48
von AND51
Bitte, Magix. Übrigens: Wenn du Pointer und PeekS() verwendest, sollte es schneller als mit Mid() gehen. Nur als Tipp. Ansonsten lass es lieber drin, Mid() ist einfacher als die PeekS() Variante.
Und Kaeru: Rücksichtslos, wie du bist, hättest du <b> und </b> mit weggeschnibbelt. Magix wollte es aber drin behalten.
Nur um dich zu ärgern (Flitzpiepe, grrr!): Ich habe also nicht so gearbeitet, wie von dir vorgeschlagen...

Verfasst: 25.04.2007 17:54
von Kaeru Gaman
> Rücksichtslos, wie du bist, hättest du <b> und </b> mit weggeschnibbelt. Magix wollte es aber drin behalten.
siehe da... nachdem ich dich drauf hingewiesen habe, hast du noch genauer gelesen als ich... gute arbeit.
> Ich habe also nicht so gearbeitet, wie von dir vorgeschlagen...
grundsätzlich schon:
der Kernansatz ist, zuerst den eindeutigen string "Current Song" zu suchen,
und von dort aus weiter vorzugehen.
das hast du beibehalten.
das ist auch der vernüftigste ansatz, denn damit kann sich alles vor "Current Song" und nach dem (fettgedruckten) titel beliebig verändern.
also, wieder einmal eine gute gemeinschaftsproduktion von uns beiden....

Verfasst: 25.04.2007 17:58
von AND51
> also, wieder einmal eine gute gemeinschaftsproduktion von uns beiden....
Wir wär's, wenn wir ne Bande/Unternehmen/Firma/Gruppe gründen?
Aber jetzt wo du's sagst: Stimmt, jetzt fällt's mir auch auf, dass wir öfters mal zusammen arbeiten. Weiter so!
> siehe da... nachdem ich dich drauf hingewiesen habe, hast du noch genauer gelesen als ich... gute arbeit.
Tjaaa...
Ich hab doch erst vor 2 Wochen eine neue Brille bekommen, da dachte ich: "Hm... Hab ich wirklich was übersehen oder muss ich die Brille umtauschen gehen?"

Verfasst: 25.04.2007 19:07
von Kaeru Gaman
> Ich hab doch erst vor 2 Wochen eine neue Brille bekommen, da dachte ich: "Hm... Hab ich wirklich was übersehen oder muss ich die Brille umtauschen gehen?"
ne, passt scho... danke fürs zum lachen bringen...

Verfasst: 25.04.2007 19:17
von AND51
lol gern geschehen...

Verfasst: 27.04.2007 21:19
von K.Putt
Was ich empfehlen kann ist auch InnerHTML und OuterHTML voneinander zu trennen, HTML Tags können sich schnell mal ändern.
Normalerweise sucht man ja OuterHTML, dass dann in einen String mit Trennzeichen und dann StringField().
InnerHTML wird natürlich komplizierter, je nachdem, was man sucht, aber man hat zumindestens schon einmal klar getrennt.
Mal ein Beispiel für OuterHTML:
(P.S. das ist natürlich auch Anfängercode, aber es funktioniert)
Code: Alles auswählen
Procedure.s get_outer_html(html$)
trennzeichen$="|"
anz=CountString(html$,"<") ; zählt die Anzahl der HTML Tags
outerhtml$=Trim(StringField(html$,1,"<")) ; liest den ersten, voranstehenden OuterHTML
If outerhtml$>"" ; (wenn vorhanden ;-)
outerhtml$=outerhtml$+trennzeichen$
EndIf ;
For i=1 To anz
text$=StringField(html$,i+1,">") ;
text$=Trim(StringField(text$,1,"<"))
If text$>""
outerhtml$=outerhtml$+text$+trennzeichen$ ;Trennzeichen, wenn erwünscht zwischen den einzelnen OuterHTML.
EndIf
Next
ProcedureReturn outerhtml$
EndProcedure
Verfasst: 27.04.2007 21:37
von AND51
Was ist denn InnerHTML? Alles, was IN den Tags steht?
Verfasst: 27.04.2007 21:55
von AND51
OuterHTML = HTML rausfiltern
InnerHTML = HTML behalten, alles andere weg
So verstehe ich das.
Hier nun meine Prozedur:
Code: Alles auswählen
Procedure.s GetInnerOrOuterHTML(html$, OuterOrInner.l=0, trennzeichen$="") ; 0=Outer, 1=Inner
Protected result.s, *pos.Character=@html$, tag.l=OuterOrInner
While *pos\c
Select *pos\c
Case '<'
tag=1
Case '>'
tag=0
result+trennzeichen$
Default
If tag = OuterOrInner
result+Chr(*pos\c)
EndIf
EndSelect
*pos+SizeOf(Character)
Wend
ProcedureReturn result
EndProcedure
Kann beides. Setze 0 ein, um Outer zu erhalten, setze 1 ein, um Inner zu erhalten. Ein Trennzeichen ist auch möglich. Lässt man dies weg, wird auch keines genommen.
Achtung: Man sollte die <PRE> und <TEXTAREA> und alle FORM-Tags (INPUT, BUTTON, etc...) Tags nicht vergessen, diese können Tags enthalten, die aber nicht gefiltert werden dürfen! Aber meines ist sowieso nur eine einfache Prozedur.