Hallo!
Ich versuche gerade einen HTML Quelltext darauf zu überprüfen, ob mindestens zwei Dezimalzahlen oder zwei Brüche in der Form xx.xx bzw. xx/xx darin vorkommen.
Mein Problem Nr.1: Es sollen nur Zahlen der Form xx.xx, x.xx, xx.x, x.x im Ergebnis auftauchen, nicht aber xxx.x oder x.xxx etc., also nur je zwei Stellen vor oder nach dem . bzw. /.
Mein Problem Nr.2: Der Quelltext enthält teils verschachtelte Tabellen, und ich will nur diejenigen herausfiltern, die eine Zahl (xx.xx od. xx/xx - siehe Frage1) enthalten.
Etwa:
<table>
<tr>
<td>Irgendwas</td>
<td>
<table>
<tr>
<td>xyz</td>
<td>xx.xx</td>
</tr>
</table>
</td>
<td>Irgendwas</td>
</tr>
</table>
und ich will nur das haben:
<table>
<tr>
<td>xyz</td>
<td>xx.xx</td>
</tr>
</table>
Hier ist das was ich bisher habe, aber dabei werden auch Zahlen der Form x.xxx im Ergebnis als x.xx (die ja in x.xxx enthalten ist) berücksichtigt.
Leider arbeite ich zum Ersten mal mit den preg_... - Funktionen und durch herumprobieren bin ich einfach nicht weitergekommen ...
Vielen Dank für Eure Tips und/oder Hilfen!
Grüße
Martin
Ich versuche gerade einen HTML Quelltext darauf zu überprüfen, ob mindestens zwei Dezimalzahlen oder zwei Brüche in der Form xx.xx bzw. xx/xx darin vorkommen.
Mein Problem Nr.1: Es sollen nur Zahlen der Form xx.xx, x.xx, xx.x, x.x im Ergebnis auftauchen, nicht aber xxx.x oder x.xxx etc., also nur je zwei Stellen vor oder nach dem . bzw. /.
Mein Problem Nr.2: Der Quelltext enthält teils verschachtelte Tabellen, und ich will nur diejenigen herausfiltern, die eine Zahl (xx.xx od. xx/xx - siehe Frage1) enthalten.
Etwa:
<table>
<tr>
<td>Irgendwas</td>
<td>
<table>
<tr>
<td>xyz</td>
<td>xx.xx</td>
</tr>
</table>
</td>
<td>Irgendwas</td>
</tr>
</table>
und ich will nur das haben:
<table>
<tr>
<td>xyz</td>
<td>xx.xx</td>
</tr>
</table>
Hier ist das was ich bisher habe, aber dabei werden auch Zahlen der Form x.xxx im Ergebnis als x.xx (die ja in x.xxx enthalten ist) berücksichtigt.
Code:
// Einlesen der zu untersuchenden Datei
$content = file_get_contents($file);
// Umwandeln des Inhalts in Kleinbuchstaben
$content = strtolower($content);
// Umwandeln aller HTML Sonderzeichen in ASCII
$content = html_entity_decode($content);
// Entfernen aller JavaScript Bereiche
$content = preg_replace("'<script[^>]*?>.*?</script>'si", "", $content);
// Entfernen aller PHP und HTML Tags außer <(/)table>, <(/)tr>, <(/)td>
$content = strip_tags($content, "<table></table><tr></tr><td></td>");
// Entfernen der Variablen in HTML Tags
//Suche <table ...> und überschreibe mit <table>
$content = preg_replace("'<table[^>]*?>'", "<table>", $content);
//Suche <tr ...> und überschreibe mit <tr>
$content = preg_replace("'<tr[^>]*?>'", "<tr>", $content);
//Suche <td ...> und überschreibe mit <td>
$content = preg_replace("'<td[^>]*?>'", "<td>", $content);
// Prüfung auf mindestens zwei Zahlen in der Form xx.xx oder xx/xx
preg_match_all("'\d{1,2}(\.|/)\d{1,2}'", $content, $treffer);
$treffer2 = count($treffer[0]);
echo $treffer2."<br>";
for ($i=0; $i< count($treffer[0]); $i++) {
echo "Treffer 1: ".$treffer[0][$i]."<br>";
echo "Treffer 2: ".$treffer[1][$i]."<br>";
}
// Reduzieren des Inhalts auf Tabellen die xx.xx|xx/xx enthalten
preg_match_all("'<table>(.*)(\d{1,2}(\.|/)\d{1,2})(.*)</table>'", $content, $treffer);
$treffer2 = count($treffer[0]);
echo $treffer2."<br>";
for ($i=0; $i< count($treffer[0]); $i++) {
echo "Treffer 1: ".$treffer[0][$i]."<br>";
echo "Treffer 2: ".$treffer[1][$i]."<br>";
}
// Ausgabe des Ergebnisses
echo $content;
Leider arbeite ich zum Ersten mal mit den preg_... - Funktionen und durch herumprobieren bin ich einfach nicht weitergekommen ...
Vielen Dank für Eure Tips und/oder Hilfen!
Grüße
Martin