@skyfly2010

Как найти упоминание первой цифры в строке?

Добрый вечер, ув. спецы, подскажите пожалуйста, как найти в строке позицию первого встречающегося числа? Пример строки:

ddsfsfsdfsdf sad 111 222 333 444
aasdaaaasdsasd 222 333 444 555

Если я правильно понимаю, то для этого необходимо регулярное выражение. Как оно будет выглядеть?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
nokimaro
@nokimaro
function num_offset($str){
    preg_match('!^\D*(?=\d)!', $str, $out);
    return isset($out[0]) ? mb_strlen($out[0]) : false;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
alekseyHunter
@alekseyHunter
Android developer
$pos = strpos("ddsfsfsdfsdf sad 111 222 333 444
aasdaaaasdsasd 222 333 444 555", "1");
Ответ написан
qork
@qork
{ background: #F00B42 }
Способ годится для поиска в однобайтовых строках:
preg_match('/\d/', 'ddsfsfsdfsdf sad 111 222 333 444', $matches, PREG_OFFSET_CAPTURE);

var_dump($matches);
/*
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    int(17)
  }
}
*/

PREG_OFFSET_CAPTURE
В случае, если этот флаг указан, для каждой найденной подстроки будет указана ее позиция (в байтах) в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемого массива matches в массив, каждый элемент которого содержит массив, содержащий в индексе с номером 0 найденную подстроку, а смещение этой подстроки в параметре subject - в индексе 1.

php.net
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы