получить intval () с помощью php? - PullRequest
2 голосов
/ 14 сентября 2011

допустим, у меня есть следующая строка:

danger13 afno 1 900004

с использованием intval() это дает мне 13, однако я хочу получить самое большое целое в строке, а именно 9000004, как мне этого добиться?

Редактировать: строка имеет разные формы, и я не знаю, где будет наибольшее число.

Ответы [ 4 ]

4 голосов
/ 14 сентября 2011

Вам нужно вывести все целые числа из строки, а затем найти самое большое ...

$str = "danger13 afno 1 900004";
preg_match_all('/\d+/', $str, $matches); // get all the number-only patterns
$numbers = $matches[0];

$numbers = array_map('intval', $numbers); // convert them to integers from string

$max = max($numbers); // get the largest

$max теперь 900004.

Обратите внимание, чтоэто очень просто.Если в вашей строке есть что-то, совпадающее с шаблоном \d+ (1 или более цифр), которое вы не хотите использовать в качестве отдельного целого числа (например, 43.535 вернет 535), это не будет удовлетворительным для вас,Вам нужно более точно определить, что вы имеете в виду.

2 голосов
/ 14 сентября 2011

Для лексикографического наибольшего целого значения в строке (до PHP_INT_MAX) вы можете просто разделить числа на части и получить максимальное значение:

$max = max(preg_split('/[^\d]+/', $str, NULL, PREG_SPLIT_NO_EMPTY));

Демо .

Или лучше самодокументируемый:

$digitsList = preg_split('/[^\d]+/', $str, NULL, PREG_SPLIT_NO_EMPTY);
if (!$digitsList)
{
    throw new RuntimeException(sprintf('Unexpected state; string "%s" has no digits.', $str));
}
$max = max($digitsList);
1 голос
/ 14 сентября 2011
$nums=preg_split('/[^\d\.]+/',$string); //splits on non-numeric characters & allows for decimals
echo max($nums);

ETA: обновлено, чтобы учесть слова, оканчивающиеся или содержащие цифры (Спасибо, Гордон!)

0 голосов
/ 14 сентября 2011
<code><?php

$string = 'danger13 afno 1 900004';

preg_match_all('/[\d]+/', $string, $matches);

echo '<pre>'.print_r($matches,1).'
';$ самое высокое = array_shift ($ соответствует [0]);foreach ($ соответствует [0] как $ v) {if ($ наибольший <$ v) {$ наибольший = $ v;}} echo $ самый высокий;?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...