Как вырезать цифры PHP?

149
11 сентября 2018, 04:10

Как в строке

Заявка:  142898 от Аптека №Дн028 бла-бла-бла

вырезать цифры после № (может быть или нет пробел, цифр может быть от 6 до 8)?

Пробую

$arTask['TITLE'] = "Заявка: № 142898 от Аптека №Дн028 бла-бла-бла";
preg_match_all('/№\s(\d[6,8])/iu', $arTask['TITLE'], $OUT, PREG_SET_ORDER);
print_r($OUT)

получаю пустой массив.

Answer 1

Можно получить результат с помощью

$arTask = "Заявка: № 142898 от Аптека №Дн028 бла-бла-бла";
if (preg_match_all('/№\s*\K\d{6,8}/u', $arTask, $OUT)) {
 print_r($OUT[0]);
}

См. демо-код на PHP. Если количество цифр от 6 и выше, можно удалить восьмёрку: '/№\s*\K\d{6,}/u'.

См. демо регулярного выражения.

Подробности

  • - символ
  • \s* - 0 и более пробельных символов
  • \K - оператор, удаляющий весь текст из текущего буфера совпадения
  • \d{6,8} - от 6 до 8 цифр (если заменить на плюс — 1 и более цифр)
Answer 2

Можно так же с помощью preg_replace()

$str = 'Заявка: № 142898 от Аптека №Дн028 бла-бла-бла';
echo preg_replace('~.+№\s?(\d{6,8}).+~', '$1', $str);
READ ALSO
Полнотекстный поиск по типу LIKE или NEAR с плэйсхолдером

Полнотекстный поиск по типу LIKE или NEAR с плэйсхолдером

Поиск выводит только полное совпадение в ячейке, не могу найти как искачь по части иекста (например 4-5 символов и чтобы нашло все ячейки в которых...

174
Вывести родителей в рекурсии

Вывести родителей в рекурсии

написал вывод дерева:

137
Как отследить приходят ли данные на сервер websocket Ratchet?

Как отследить приходят ли данные на сервер websocket Ratchet?

Сделал по данному примеру https://gostashit/ru/stashes/1533-podklucenie-k-serveru-websocket-iz-web-prilozenia Сервер запускается,

179
Повторы строк php

Повторы строк php

Есть код, который выводит цвета:

160