Получить номер из строки - PullRequest
3 голосов
/ 20 апреля 2011

У меня есть строка, например, "lorem 110 ipusm", и я хочу получить 110 Я уже пробовал это:

preg_match_all("/[0-9]/", $string, $ret);

но это возвращает это:

Array
(
    [0] => 1
    [1] => 1
    [2] => 0
)

Я хочу что-то вроде этого

Array
(
    [0] => 110        
)

Ответы [ 4 ]

3 голосов
/ 20 апреля 2011

Чтобы поймать любое число с плавающей запятой, используйте:

preg_match_all("/[+-]?\d+[\d\.Ee+]*/", $string, $matches);

, например:

<?
$string = 'ill -1.1E+10 ipsum +1,200.00 asdf 3.14159, asdf';
preg_match_all("/[+-]?\d+[\d\.Ee+]*/", $string, $matches);
var_dump($matches);
?>

, когда при запуске получается:

array(1) {
  [0]=>
  array(4) {
    [0]=>
    string(8) "-1.1E+10"
    [1]=>
    string(2) "+1"
    [2]=>
    string(6) "200.00"
    [3]=>
    string(7) "3.14159"
  }
}
3 голосов
/ 20 апреля 2011

Вы должны указать более одной цифры:

preg_match_all("/[0-9]+/", $string, $ret);
3 голосов
/ 20 апреля 2011

Используйте /\d+/ - это должно решить.

3 голосов
/ 20 апреля 2011

Используйте оператор + (1 или более совпадений):

preg_match_all("/[0-9]+/", $string, $ret);

Кроме того, вы пытаетесь поддерживать знаки?десятичные точки?научная нотация?Регулярные выражения также поддерживают сокращение для классов символов;[0-9] - это цифра, поэтому вы можете просто использовать \d.

...