PHP Regex: Как получить первое число в адресной строке? - PullRequest
0 голосов
/ 02 ноября 2019

Мне нужно извлечь первое вхождение числа, найденного в адресе. Адреса всегда начинаются примерно так (я выделил жирным шрифтом то, что я хочу сопоставить) ...

  • Квартира 12 , квартира 2 ...
  • 12 , Название квартиры

Чтобы сделать его немного сложнее, возможно, что некоторые могут иметь буквы на одной стороне числа, например ...

  • Квартира 12 a, Квартира 2 ...
  • 12 th Room, корпус 3 ...

Мое решение пока работает, но не правильно. У меня есть регулярное выражение

\b([0-9]+)\b

, которое получает любое число, окруженное пробелом с обеих сторон, но сначала оно получает все вхождения, а не первое, что жизненно важно для моих требований. Во-вторых, он не обрабатывает число с буквой на одной стороне, поэтому, например, игнорируется 12a.

Пример кода ...

$subject="A 2nd test, Apartment 3, Building 1232, Random Street, RH12 4SZ";
echo "Text to find number in: $subject<BR>";
if (preg_match('\b([0-9]+)\b', $subject, $matches)) {
    echo "match, found number: ".implode(",",$matches);
}else{
    echo "no match";
}

Может кто-нибудь улучшить то, что яесть?

1 Ответ

1 голос
/ 02 ноября 2019

Простой \d+ должен сделать эту работу.

Демо: https://3v4l.org/vLCaf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...