Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

text zwischen zwei zeichen finden

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
jadmanx



Anmeldungsdatum: 06.01.2005
Beiträge: 3

BeitragVerfasst am: 06.01.2005, 00:57    Titel: text zwischen zwei zeichen finden Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 06.01.2005, 01:02    Titel: Antworten mit Zitat

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 grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 06.01.2005, 01:23    Titel: Antworten mit Zitat

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 zwinkern
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 06.01.2005, 01:31    Titel: Antworten mit Zitat

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 zwinkern
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 06.01.2005, 01:43    Titel: Antworten mit Zitat

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 grinsen
@ 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 zwinkern

_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 06.01.2005, 22:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz