Вы можете сделать это с помощью регулярных выражений :
#!/usr/bin/perl
my $string = 'fhjgfghjk3456mm 735373653736 icasd 666666666666 111111111111';
while ($string =~ m/\b(\d{12})\b/g) {
say $1;
}
Проверить здесь регулярное выражение: http://rubular.com/r/Puupx0zR9w
use YAPE::Regex::Explain;
print YAPE::Regex::Explain->new(qr/\b(\d+)\b/)->explain();
The regular expression:
(?-imsx:\b(\d+)\b)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
\b the boundary between a word char (\w) and
something that is not a word char
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
\d+ digits (0-9) (1 or more times (matching
the most amount possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
\b the boundary between a word char (\w) and
something that is not a word char
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
Вы должны использовать
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
перед своим последним правилом. Первые правила переписали запрошенный URL в допустимый (php) файл, к которому можно получить доступ, поэтому условия станут ложными. Если ни одно из правил не соответствовало ранее, но запрошенный URL-адрес еще является допустимым файлом (например, изображением), это правило также не обрабатывается.
Вы также должны опустить косую черту в последнем правиле: ^ (. *) / $, Потому что в противном случае это правило переписывает только URL с конечной косой чертой.