Zumindest für diesen speziellen Fall könnten Sie Folgendes verwenden '/\(\d+\-\d+ of (\d+)\)/'
als die pattern
.
Sie passt auf Zeichenfolgen wie diese ({one-or-more-digits}-{one-or-more-digits} of {one-or-more-digits})
und fängt die letzte {one-or-more-digits}
in eine Gruppe ( {}
s nur der Klarheit halber hinzugefügt ).
$str = '<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>';
$matches = array();
if (preg_match('/\(\d+\-\d+ of (\d+)\)/', $str, $matches))
{
print_r($matches);
}
Drucke:
Array
(
[0] => (1-20 of 10000)
[1] => 10000
)
Die 10000, nach denen Sie suchen, wären also zugänglich unter $matches[1]
.
Edit nach deinem Kommentar: Wenn Sie mehrere Vorkommen von ({one-or-more-digits}-{one-or-more-digits} of {one-or-more-digits})
können Sie verwenden preg_match_all
um sie alle zu fangen. Ich bin mir nicht sicher, wie nützlich die Zahlen selbst sind, ohne den Kontext, in dem sie vorkommen, aber hier ist, wie Sie es tun könnten:
$str = '<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>';
$str .= "\n$str\n";
echo $str;
$matches = array();
preg_match_all('/\(\d+\-\d+ of (\d+)\)/', $str, $matches);
print_r($matches);
Drucke:
<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>
<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>
Array
(
[0] => Array
(
[0] => (1-20 of 10000)
[1] => (1-20 of 10000)
)
[1] => Array
(
[0] => 10000
[1] => 10000
)
)
Auch hier gilt: Was Sie suchen, ist in $matches[1]
nur dass es sich diesmal um ein Array handelt, das 1 oder mehrere der tatsächlichen Werte enthält.