 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
29.06.2004, 11:26
|
#1
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
[reg_ex] zeichenkette(n) aus einer seite herausfiltern
einen schoenen tag euch allen,
ich moechte gern aus einer webseite eine bestimmte zeichenkette herausloesen. vielleicht auch mehrere. jetzt bin ich allerdings nicht die groesste leuchte bei reg-ex-funktionen.
angenommen ich habe einen bestimmten begriff und nach ihm folgen 4 bis 6 zeichen, die ich gern haben moechte. die zeichen koennen eventuell auch mit komma oder punkt getrennt sein. wie bekomme ich die daten herausgefiltert?
gruss,
hardy
|
|
|
29.06.2004, 12:18
|
#2
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Schreib doch mal ein konkretes Beispiel auf ...
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
29.06.2004, 12:27
|
#3
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
z.b.: mal angenommen, ich wollte hier den wert des nasdaq rausfiltern (mir ist nix bloederes eingefallen  ).
PHP-Code:
$datei = fopen("http://boersen.manager-magazin.de/mmo/kurse_listen.htm?sektion=nasdaq100", r);
while($zeile = fgets($datei, 1024)) {
$bereinigt = strip_tags($zeile, "<br>"); // kleiner nachtrag
preg_match( .... // hier haenge ich
print($nasdaq);
}
fclose($datei);
reicht das als beispiel?! 
Geändert von theo (29.06.2004 um 12:49 Uhr).
|
|
|
29.06.2004, 12:53
|
#4
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Um die Sache zu vereinfachen, würd ich die auszuwertende Seite zu einer Zeile konkadinieren und in eine Variable schreiben. In dieser Variablen kannst Du dann mit
/Nasdaq<\/a><\/td><td class="xxl" align="right">([^<]+)</
Deinen Nasdaq-Wert ausfiltern... ( kann sein, daß Du die Umgebung noch genauer definieren musst - habs mit nem Schnipsel probiert )
|
|
|
29.06.2004, 13:24
|
#5
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
hmmm ... jetzt hab ich mir die sache schon versucht, etwas einfacher zu machen indem ich strip_tags() eingefuegt habe. damit umgehe ich ausserdem das risiko, dass jemand die namen seiner css aendert und ich dann kein ergebnis mehr haette.
wenn ich dich aber richtig verstanden habe, dann koennte das script etwa so aussehen:
PHP-Code:
$datei = fopen("http://boersen.manager-magazin.de/mmo/kurse_listen.htm?sektion=nasdaq100", r);
while($zeile = fgets($datei, 1024)) {
$eineVariable.= $zeile;
}
preg_match('/Nasdaq<\/a><\/td><td class="xxl" align="right">([^<]+)</', $eineVariable, $match);
print($match[0]);
fclose($datei);
es wird aber nix ausgegeben. 
|
|
|
29.06.2004, 13:40
|
#6
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Der Quellcode ist durch Einrücken mittels Spaces "hübsch" gemacht worden. Also, entweder führende ( und endende ) Spaces beim Zusammenfügen löschen oder die regexp erweitern:
/Nasdaq<\/a><\/td>\s*<td class="xxl" align="right">([^<]+)</
|
|
|
29.06.2004, 14:14
|
#7
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
whow ... jetzt sieht es schon besser aus:
Nasdaq 2.019,82<
wenn ich die ausgabe jetzt noch auf den reinen wert reduzieren koennte ...
|
|
|
29.06.2004, 14:20
|
#8
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
was ich meine ist, dass die aenderung der abfrage auf :
PHP-Code:
preg_match('/<\/a><\/td>\s*<td class="xxl" align="right">([^<]+)/', $eineVariable, $match);
folgenden quellcode ausgibt:
HTML-Code:
</a></td>
<td class="xxl" align="right">2.019,82
also fuer eine weitere verwertung noch nicht wirklich brauchbar.
|
|
|
29.06.2004, 14:25
|
#9
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
$match[0] oder $match[1] ?
|
|
|
29.06.2004, 14:51
|
#10
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
sorry ...
es stand noch auf $match[0].
soweit funzt es dann erstmal. hab also vielen dank!
wenn ich nun aber strip_tags() beibehalten haette, wie haetten dann die pattern aussehen muessen?
|
|
|
29.06.2004, 15:01
|
#11
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Kommt drauf an, wie's aussieht und ob's dann immer noch eindeutig identifizierbar ist. Eine Möglichkeit wäre
/NASDAQ\s*([0-9\.,]+)/ ( ohne Gewähr )
Lass Dir die Zeile ausgeben und bau darauf die regexp auf.
Wichtig ist halt, daß die ganze Chose für die Auswertung in einer Zeile steht.
|
|
|
29.06.2004, 16:09
|
#12
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
wahnsinn! es haut hin.
danke 
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 09:03 Uhr.
|
 |