По крайней мере, для этого конкретного случая, вы можете использовать '/\(\d+\-\d+ of (\d+)\)/'
в качестве pattern
.
. Это соответствует строкам, подобным ({one-or-more-digits}-{one-or-more-digits} of {one-or-more-digits})
, и захватывает последние {one-or-more-digits}
в группу ({}
s просто добавлено для ясности здесь ..).
$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);
}
отпечатков:
Array
(
[0] => (1-20 of 10000)
[1] => 10000
)
Итак, 10000, которые вы ищете, будут доступны по адресу $matches[1]
.
Изменить после вашего комментария: Если у вас есть несколько вхождений ({one-or-more-digits}-{one-or-more-digits} of {one-or-more-digits})
, вы можете использовать preg_match_all
, чтобы поймать их всех.Я не уверен, насколько полезны сами цифры без контекста, в котором они встречаются, но вот как вы могли бы это сделать:
$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);
отпечатков:
<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
)
)
Опять же, чтовы ищете в $matches[1]
, только на этот раз это будет массив, содержащий 1 или более фактических значений.