 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
jadmanx
Anmeldungsdatum: 06.01.2005 Beiträge: 3
|
Verfasst am: 06.01.2005, 00:57 Titel: text zwischen zwei zeichen finden |
|
|
hallo,
ich hoffe ihr könnt mir helfen.
würde gerne wissen wie ich folgendes in basic programmiere.
habe eine variable mit einem html code
und ich will sie durchsuchen und alles was
zwischen <b> und </b> steht in einer variablen abspeichern
also nach <b> suchen und bis </b> ausgeben bis der ganze text durchsucht ist _________________ Jadmanx Jd Buchner |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 06.01.2005, 01:02 Titel: |
|
|
Code: |
html$ = "blablabla<b>ABCDEFG</b>bla"
Bstart = INSTR(LCASE$(html$), "<b>")
Bende = INSTR(Bstart, LCASE$(html$), "</b>")
Text$ = MID$(html$, Bstart, Bende-Bstart)
|
Sollte eigentlich gehen  _________________
 |
|
Nach oben |
|
 |
Gremlin

Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 06.01.2005, 01:23 Titel: |
|
|
Dein Code liefert auch <b>, also
text$ = "<b>ABCDEFG"
Code: | html$ = "blablabla<b>ABCDEFG</b>bla"
Bstart = INSTR(LCASE$(html$), "<b>")
Bende = INSTR(Bstart, LCASE$(html$), "</b>")
text$ = MID$(html$, bstart + LEN(bstart) + 1, Bende - (bstart + LEN(bstart) -
1)) |
Leider funktioniert der Code nicht bei z.B. <body>, ich arbeite dran  _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt.  |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 06.01.2005, 01:31 Titel: |
|
|
aso, ja wegen dem <br>ABCDEFG, da muss man dann schreiben: Bstart = INSTR(LCASE$(html$), "<b>") + 3 (wenn ich mich nicht irre)
natürlich geht er nicht bei <body>, weil der corde nur für <br> vorgesehen ist  _________________
 |
|
Nach oben |
|
 |
Gremlin

Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 06.01.2005, 01:43 Titel: |
|
|
So, ich habs jetzt ein wenig aufwendiger gestaltet:
...::: Verbesserte Version :::...
Code: | ON ERROR GOTO 1
CLS
html$ = "asdfasd<a href='http://www.qbasic.de'>Ein Link zu QBasic.de</a>asadasd"
Tag.Start.1% = INSTR(html$, "<a")
Tag.Start.2% = INSTR(Tag.Start.1%, html$, ">")
Tag.Ende% = INSTR(html$, "</a>")
Tag.Laenge% = LEN(MID$(html$, Tag.Start.1%, Tag.Start.2% - Tag.Start.1% + 1))
Gesuchter.Text$ = MID$(html$, Tag.Start.1%, Tag.Ende% - Tag.Start.1%)
Gesuchter.Text$ = RIGHT$(Gesuchter.Text$, LEN(Gesuchter.Text$) - Tag.Laenge%)
PRINT CHR$(34); Gesuchter.Text$; CHR$(34)
END
1 PRINT "Kein Tag gefunden!"
PRINT "Es ist kein Tag vorhanden, oder er ist unvollständig."
PRINT "Überprü?fe den STRING."
PRINT "Ende."
END |
Features:
- Fehlerausgabe, wenn kein Tag entdeckt wird.
- Man muss die Länge von zB <br> nicht mehr als Konstante mitgeben.
- Attribute (wie im Bsp.: <a href=''">) werden unterstützt
Einschränkung:
- noch muss man den Tag im Basic ändern (noch keine Datei, darauf kommts aber noch nicht an!)
- In html$ darf NICHT das Gänsefüßchen vorkommen.
Das zweite könnte man durch Einlesen aus einer Datei bewerkstelligen.
(IF aktuelles.Zeichen$ = CHR$(34) THEN html$ = html$ + CHR$(34) oder so)
Argh, der 4. Edit oder so
@ ICC
Damit meinte ich, dass, wenn man in meinem ersten Code alle <b>'s und </b>'s durch <body> und </body> ersetzt, dann ist das Ergebnis nicht korrekt, man muss anscheinend auch die Kosntante irgendwie austauschen -> Schlecht, da nicht variabel  _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt.  |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 06.01.2005, 22:11 Titel: |
|
|
Eigentlich muss man viel eher nach "<" und ">" alleine suchen gehen. Allgemeine, vereinfachte Syntax von HTML/XML in EBNF:
whitespacezeichen ::= " " | CR | LF | TAB
whitespace ::= whitespacezeichen { whitespacezeichen }
buchstabe ::= "A" | "B" | .. | "Y" | "Z" | "a" | "b" | ... | "z"
zahl ::= "0" | "1" | .. | "9"
elementName ::= buchstabe { buchstabe | zahl }
attributName ::= buchstabe { buchstabe | zahl }
entity ::= "&" ( buchstabe { buchstabe | zahl } )
| ( "#" zahl { zahl; } ) ";"
beliebigesZeichen ::= <Alle Unicode-Zeichen gemäss charset-Angabe ausgenommen '<', '>', '"' und '&' >
inhalt ::= { beliebigesZeichen }
attribut ::= attributName "=" """ inhalt """
htmlTag ::= "<" elementName { whiteSpace attribut }
[ whiteSpace "/" ] ">"
dokument ::= inhalt { htmlTag inhalt }
Hinweis: Rekursion gibt es auf dieser Ebene eigentlich keine. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|