Hello,
Ist mein Vorhaben uberhaupt realistisch mit Regex zu lösen?
Bestimmt. Und so schwer ist es auch mMn auch nicht.
Deine Anforderungen sehen sehr nach "Wortgrenze" aus
Treffer vorhanden
Array
(
[0] => Array
(
[0] => 555
[1] => 22.9877
[2] => 189,4348
[3] => 2001
[4] => 8
[5] => 0,0044889
[6] => 00.0044889
[7] => 12.388.444,24
[8] => 0
[9] => 44
[10] => 55
)
)
So als erster Ansatz:
<?php ### zahlen_filtern.php ###
$str = 'id=xyz><d difopfwf9 <b>555</b> kewffoop ew43534 22.9877 fd<sdr ^ 4ffkp <p>reew 33p efjfi 89,4348 xx</b>2001<b>xx<html>r fei/jefw 8)( ewfd9e730ß 0,0044889 00.0044889 fdl 12.388.444,24 r4rßß 0 <b>44-55</b> rkfr0<tt>dfrfwrigp';
$pattern = '~\b[0-9,.]+\b~';
echo (preg_match_all ( $pattern, $str , $_result))?'Treffer vorhanden':'keine Treffer';
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_result,1));
echo "</pre>\r\n";
?>
Die Zusatzbedingugnen kannst Du nun selber einbauen, wolltest Du ja auch, oder? ;-)
Wie man aber in einem kaputten HTML-String feststellen kann, ob man sich innerhalb oder außerhalb eines inhaltsbewehrten Elementes befindet, dazu fällt mir nicht wirklich etwas ein.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg