@IvanovIvanIvanych

Как в данном случае обрезать все лишнее в строке, чтобы осталось числовое значение?

Обрезаю все лишнее в строке из логов сервера, кроме идентификатора 19 символьного (как оказалось и другая длина может быть), по следующему принципу: нахожу где начало по ключевому слову (идущему перед искомыми цифрами), отрезаю левую часть и остается id с хвостом из лишних символов справа от него. Далее применяю substr таким образом, что первые 19 символов оставались и отрезалось все остальное:
$var = substr($var, 0, 19);
Но недавно обнаружил, что идентификаторы в редких случаях имеют длину, отличную от 19 символов...

Вопрос: как в этом случае отрезать лишний хвост в правой части строки? Так, чтобы отрезалось все кроме этих идущих в самом начале цифр? После этих цифр идут всякие не цифровые символы, однако через сколько то позиций опять начинаются цифры и эти цифры тоже не нужны.

Пример:
123456789012345" "Mozilla/5.0 (Linux; Android 7.0; AGS-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"

От всего что после 123456789012345 надо избавиться. Просто убрать все символы кроме цифр не подходит, т.к. еще и другие цифры не нужные присутствуют после 123456789012345. Но не все строки такие, как в этом примере. Возможно в каких то случаях, в логах сервера, не будет кавычки и будет просто пробел, или это будет конец строки, или еще какие то варианты. Как это все попроще предусмотреть?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
@Blindovich
$s = '123456789012345" "Mozilla/5.0 (Linux; Android 7.0; AGS-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"';
$matches = null;
preg_match('/\d*/m', $s, $matches);

$matches[0] // 123456789012345
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Похожие вопросы