Portal > Foren > PHP > PHP-Programmierung > RegExp-Unkenntnis meinerseits...
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 10.10.2005, 18:31 Nach oben    #1
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.374
Standard RegExp-Unkenntnis meinerseits...

Ich würde gerne aus einer HTML-Datei eine konkrete Zahl auslesen.

Die HTML-Datei hat folgendes Stück Code:
Code:
<TR><TH HEIGHT=4></TH></TR>
<TR><TH BGCOLOR="#C0C0C0" COLSPAN=6 ALIGN=left><FONT SIZE="-1">Totals</FONT></TH>
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">11154426</FONT></TH>
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">32404</FONT></TH>
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">277993</FONT></TH>

<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">844030</FONT></TH>
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">1576951</FONT></TH></TR>
<TR><TH HEIGHT=4></TH></TR>
</TABLE>
</CENTER>
Nun ist es so, dass es sich hierbei nur um einen Ausschnitt handelt. Ich interessiere mich nun für den regulären Ausdruck, damit ich die Zahl (in diesem Fall 32404) auslesen kann.
Die Zahlen ändern sich dabei jedoch ständig.

Ich habe exakt 0 Ahnung von RegExp...

Kann mir jmd. erklären, wie ich es trotzdem schaffe den Wert zu erhalten?

Ich dachte an sowas in der Art:
PHP-Code:
<?php
  error_reporting
(E_ALL);

  
$HTML file_get_contents ("datei.html"); 

  
preg_match("(???)"$HTML$zahl);
  echo 
$zahl;
?>
wobei dann jedoch $HTML der HTML-Code der kompletten Datei wäre.
Als Anhaltspunkt könnte das Wort 'Totals' dienen, das vorher nur einmal auftaucht.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2005, 19:38 Nach oben    #2
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

PHP-Code:
$str=<<<EOF
<TR><TH HEIGHT=4></TH></TR>
<TR><TH BGCOLOR="#C0C0C0" COLSPAN=6 ALIGN=left><FONT SIZE="-1">Totals</FONT></TH>
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">11154426</FONT></TH>
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">32404</FONT></TH>
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">277993</FONT></TH>

<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">844030</FONT></TH>
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">1576951</FONT></TH></TR>
<TR><TH HEIGHT=4></TH></TR>
</TABLE>
</CENTER>
EOF;

$regexp="#(<font size=\".+[^>]\">)([0-9]+)(<\/font>)#Si";
preg_match_all($regexp$str$treffer);

print_r($treffer[2]); 
J33d3X ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2005, 19:52 Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Es kann ja sein, dass die Tabelle aus mehreren Zeilen besteht wo Zahlen vorkommen.
Deshalb mal die Variante den HTML-Text erst mach »Totals« zu suchen:

PHP-Code:
<?
error_reporting(E_ALL);

$TXT = <<<EOD
<TR><TH HEIGHT=4></TH></TR> 
<TR><TH BGCOLOR="#C0C0C0" COLSPAN=6 ALIGN=left><FONT SIZE="-1">lalalalala</FONT></TH> 
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">11154426</FONT></TH> 
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">32404666</FONT></TH> 
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">277993</FONT></TH> 

<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">844030</FONT></TH> 
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">1576951</FONT></TH></TR> 
<TR><TH HEIGHT=4></TH></TR> 
</TABLE> 
</CENTER> 
<TR><TH HEIGHT=4></TH></TR> 
<TR><TH BGCOLOR="#C0C0C0" COLSPAN=6 ALIGN=left><FONT SIZE="-1">Totals</FONT></TH> 
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">11154426</FONT></TH> 
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">32404</FONT></TH> 
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">277993</FONT></TH> 

<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">844030</FONT></TH> 
<TH BGCOLOR="#C0C0C0" ALIGN=right><FONT SIZE="-1">1576951</FONT></TH></TR> 
<TR><TH HEIGHT=4></TH></TR> 
</TABLE> 
</CENTER> 

EOD;

$pattern = '~Totals(.+)</table>~isU';
preg_match($pattern, $TXT, $HTML);

$pattern = '~<FONT SIZE="-1">([0-9]+)</FONT>~isU';
preg_match_all($pattern, $HTML[1], $array);

// echo '<pre>', print_r($array, true), '</pre>';
echo $array[1][1];
?>
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2005, 19:59 Nach oben    #4
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

hehe jupp
$str= // ....

$t=explode('totals',$str);
$str=$t[1];
J33d3X ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2005, 20:39 Nach oben    #5
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.374
Standard

also...

es funktioniert zwar, aber ich will mir das mal näher anschauen, warum was wieso... und so...


PHP-Code:
<?php

  error_reporting
(E_ALL);

  
$txt file_get_contents ("datei.html");



$pattern '~Totals(.+)</table>~isU';
preg_match($pattern$txt$HTML);

$pattern '~<FONT SIZE="-1">([0-9]+)</FONT>~isU';
preg_match_all($pattern$HTML[1], $array);


echo  
$array[1][81];
?>
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2005, 20:57 Nach oben    #6
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

http://pcre.nophia.de/intro/index.php
J33d3X ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Werte in einen Regexp einsetzen. ex³ PHP-Programmierung 6 02.02.2007 07:27
StrinkTokenizer oder doch RegExp? Ben Allgemeine Java-Programmierung 7 15.03.2006 13:59
regexp Datums-Vervollständigung ex³ PHP-Programmierung 10 12.02.2006 16:16
[PHP] Regexp und die Gierigkeit CIX88 Tutorials 0 29.01.2006 13:36
[MySQL] REGEXP Problem Jay Datenbanken 3 27.12.2005 13:52


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45