Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
14.05.2005, 23:33
K-Putt



Ich arbeite zur Zeit an einer Firefox-Erweiterung, die aus einem Forum die Index-Seite auslesen, und einen gewissen Textabschnitt ausgeben soll.

Da es eine FF Erweiterung ist, wird das ganze natürlich in JS geschrieben.

Momentan mache ich das auslesen der Seite per xmlHttpRequest, das klappt auch ganz gut.
Dann habe ich in einer Variablen den kompletten HTML-Quelltext dieser Seite.

Nur wie filtere ich jetzt am besten den Abschnitt (ist ein Link) raus?

Der Link sieht so aus:

Zitat:
<a id="antworten_link" href="/replies.jsp?id=12345">Antworten (5/10)</a>
Genau genommen will ich die beiden Zahlen (5/10) herausfiltern.

Der Link hat zwar eine ID, aber da sich der Quelltext in einer Variable befindet, kann ich nicht mit document.getElementById("antworten_link").innerHTML darauf zugreifen.

Irgenwelche Ideen?

Danke,
kputt

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
001
15.05.2005, 00:13
theDon



Wenn ich mich richtig erinnere, kann Javascript doch Regular Expressions?

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
002
15.05.2005, 00:17
K-Putt



Tatsächlich?
Ich dachte das kennen nur die "besseren" Sprachen..

Aber eigentlich logisch, die Adblock Erweiterung kennt auch Reguläre Ausdrücke...danke für den Tipp.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
003
16.05.2005, 12:35
K-Putt



So, habs jetzt geschafft dass ich die 3 Zahlen (id bei?id=, zahlen bei "Antworten") nur noch aus folgendem Text filtern muss:

Quellcode:<div align="right" class="s">Du bist als <a href="/userinfo.jsp?id=12345"><b>Username</b></a> angemeldet. [<a href="/preferences.jsp?id=12345">Einstellungen</a> | <a id="antworten_link" href="/replies.jsp?id=12345">Antworten (1/1)</a> | <a href="/logout.jsp">Logout</a>]</div>
Nun bin ich aber nicht wirklich fit beim Thema regexp...könnte mir da evtl. jemand so einen Ausdruck basteln? :)
Würde mich auch revanchieren soweit es mir möglich ist...

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
004
16.05.2005, 14:02
KhanRKerensky



Ich hab leider keine Ahnung was es für Methoden in JS für Regexp gibt aber in Python bekomm ich deine 3 Zahlen über Quellcode:\?id=(\d+)">Antworten \((\d+)\/(\d+)\) Wie du das jetzt in JS einbindest hab ich allerdings keine Ahnung...

/edit
evnt muss du vorne und hinten ein .*? einbauen damit JS matched. In Python hats einmal match() und einmal search(). Für match() bräuchte mans für search() nicht.

[edit (kputt)]
sorry, falschen post editiert

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book


Dieser Beitrag wurde am 16.05.2005 um 15:08 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
16.05.2005, 14:48
K-Putt



Wie man das in JS einbindet, ist relativ simpel, auch gibt es ein match() und search().

Wenn ich dein Beispiel mit search() ausführe findet er allerdings kein Ergebnis, wenn ich es mit .*? am Anfang und Ende durch match() jage, krieg ich nur ein "invalid quantifier ?" :/

[edit]
So sieht mein Beispiel aus:

PHP-Quellcode:<?php
<html>
<
head>
    <
title>jstest2</title>
</
head>

<
body>
    <
script type="text/javascript">
    var 
teststring '<div align="right" class="s">Du bist als <a href="/userinfo.jsp?id=12345"><b>Username</b></a> angemeldet. [<a href="/preferences.jsp?id=12345">Einstellungen</a> | <a id="antworten_link" href="/replies.jsp?id=12345">Antworten (1/1)</a> | <a href="/logout.jsp">Logout</a>]</div>';

    var 
Ergebnis teststring.match('.*?\?id=(\d+)">Antworten \((\d+)\/(\d+)\).*?');

    if (
Ergebnis)
    {
        for (
0Ergebnis.length; ++i)
        {
            
alert(Ergebnis[i]);
        }
    }
    else
    {
        
alert('Kein Ergebnis');
    }

    
</script>
</body>
?>
Kanns sein dass die Regexp-Syntax bei JS anders ist?
Meine auf selfhtml was von einem zwingenden / am Anfang und am Ende des Regexp gelesen zu haben.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 16.05.2005 um 15:09 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
16.05.2005, 15:18
KhanRKerensky



Quellcode:var str = '<div align="right" class="s">Du bist als <a href="/userinfo.jsp?id=12345"><b>Username</b></a> angemeldet. [<a href="/preferences.jsp?id=12345">Einstellungen</a> | <a id="antworten_link" href="/replies.jsp?id=12345">Antworten (1/1)</a> | <a href="/logout.jsp">Logout</a>]</div>'
var something = str.match(/\?id=(\d+)">Antworten \((\d+)\/(\d+)\)/)
Das geht bei mir. In something[1] bis something[3] hab ich deine Zahlen.

In den / liegt der Hase begraben. Und zwar müssen die anstatt den ' am Anfang und Ende benutzt werden. / bzw ' benutzt JS als unterscheidung zwischen Regex und Strings. Man könnte match() (so wertet das JS auch bei dir aus) mit Strings füttern.

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book


Dieser Beitrag wurde am 16.05.2005 um 15:20 von KhanRKerensky bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
16.05.2005, 15:42
K-Putt



Haut hin!

Ein mächtiges Danke, werd dich auf jeden Fall in den Credits der Erweiterung erwähnen.

Hast was gut bei mir.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 16.05.2005 um 15:43 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche