@adun3

Как вытащить число из строки?

Добрый день!
Надо вытащить коды из массива строк, строки типа:
159111/08/199915 -BPOSS CS PG1 1>400010516305897TEXTYU(самая сложная),
обычно такие:
IVAN PUPKOV 1179010/27/2011HOLD-BMAN/DEL CS PG100010515465174LIALIA
в регулярках не силен(только самые простые могу),
как вытащить из последнего "слова" 14 цифр? (т.е. из первого 00010516305897, из второго
00010515465174).
Помогите пожалуйста.
  • Вопрос задан
  • 1392 просмотра
Пригласить эксперта
Ответы на вопрос 4
@Wol_fi
php, js, mysql, highload
$matches = array();
preg_match('/(\d)?(\d{14})/', 'IVAN PUPKOV 1179010/27/2011HOLD-BMAN/DEL CS PG100010515465174LIALIA', $matches);
echo $matches[2]; //00010515465174
Ответ написан
elevenelven
@elevenelven
Php Dev @ Amadeus
<?php
function returnNumberFromLastWord($str) {

  $lastWord = array_pop( explode( ' ', $str ) );

  if( false !== strpos( $lastWord, '>' ) ){
    $lastWord = substr( $lastWord, strpos( $lastWord, '>' ) + 1 );
  }
  $number = filter_var( $lastWord, FILTER_SANITIZE_NUMBER_INT );
  return substr( $number, strlen( $number ) - 14 );
}
//////////////////////////////////////////////////////////////////////////////////////
$a = '159111/08/199915 -BPOSS CS PG1 1>400010516305897TEXTYU';
$b = 'IVAN PUPKOV 1179010/27/2011HOLD-BMAN/DEL CS PG0100010515465174LIALIA';

echo $a, '<br>';
echo returnNumberFromLastWord($a);

echo '<br>';

echo $b, '<br>';
echo returnNumberFromLastWord($b);
Ответ написан
Комментировать
coderisimo
@coderisimo
Вот здесь удобно писать регулярки и тестировать их.

https://regex101.com/
Ответ написан
Комментировать
Ivanq
@Ivanq
Знаю php, js, html, css
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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