За последние 24 часа нас посетили 117684 программиста и 7975 роботов. Сейчас ищут 1670 программистов ...

Как достать число из середины строки (substr)

Тема в разделе "PHP для новичков", создана пользователем Glebiys, 3 июл 2018.

  1. Glebiys

    Glebiys Новичок

    С нами с:
    11 май 2018
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Los-Angeles CA
    Доброго времени суток! Встала задача извлекать из содержимого переменной число, которое находится в середине.
    Пример сообщения:
    PHP:
    1. <?php
    2. $message = "MessageText: 001 Alex"
    Из этого сообщения мне нужно в отдельные переменные записать: 001 / Alex
    Имя (Alex) получаю следующим образом:
    PHP:
    1. <?php
    2. $name = substr("$message", 17);
    А вот с номером уже возникает проблема. Кол-во символов в номере неизменно равно 3, а вот ник может изменяется.
    Через substr у меня получается только обрезать так "001 Alex" или "Alex". Как мне из этого сообщения извлечь номер, если я незнаю, на какое кол-во символов обрезать справа?
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    PHP:
    1. <?php
    2. $message = "MessageText: 001 Alex";
    3. preg_match('/(?<number>[0-9]+)\s?(?<name>[a-z]+)$/i', $message, $matches);
    4. echo $matches['number']; // 001
    5. echo $matches['name']; // Alex
    P.S. Если шаблон строки строго определен, то можно еще проще
    PHP:
    1. $parts = explode(' ', $message);
    2. echo $parts[1]; // 001
    3. echo $parts[2]; // Alex
     
    #2 Deonis, 3 июл 2018
    Последнее редактирование: 3 июл 2018
    Glebiys и Почтальон нравится это.
  3. Почтальон

    Почтальон Новичок

    С нами с:
    1 июл 2018
    Сообщения:
    13
    Симпатии:
    1
    Адрес:
    Сызрань
    Ищите сначала вхождение строки MessageText:, так вы найдете начальную позицию подстроки, которую необходимо получить
    --- Добавлено ---
    Ну да, или как подсказали выше - регуляркой
     
    Glebiys нравится это.
  4. Glebiys

    Glebiys Новичок

    С нами с:
    11 май 2018
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Los-Angeles CA
    Получилось, Огромное Спасибо!