Как отформатировать число в сербский формат с помощью PHP? - PullRequest
1 голос
/ 08 апреля 2019

У меня есть номер, отправленный из формы следующим образом:

0641234567
064-123/4567
064/123-4567
3816412345678

И это должно быть так:

+3816412345678

с +, без 0 и с максимум 14 символами, включая '+ '.

Как я могу решить это с помощью регулярных выражений?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Все, что вам нужно, это множественная замена, в основном с тремя правилами:

  • заменить - или / пустой строкой
  • заменить ноль в начале на +381
  • Поставьте + в начале номера, если первое число от 1 до 9

Проверьте это PHP Demo ,

$arr = ['0641234567','064-123/4567','064/123-4567','3816412345678'];

foreach($arr as $s) {
    echo $s." --> ".preg_replace(['/^0/', '/^(?=[1-9])/', '/[-\/]/'], ['+381', '+', ''], $s)."\n";
}

Отпечатки,

0641234567 --> +381641234567
064-123/4567 --> +381641234567
064/123-4567 --> +381641234567
3816412345678 --> +3816412345678

Дайте мне знать, если какой-либо из ваших случаев будет раскрыт.

0 голосов
/ 08 апреля 2019

Данные, которые вы показали, могут быть неполными, и могут быть крайние случаи, отличные от того, что мы видим правильно. Основываясь на том, что мы видим прямо сейчас, можно заменить вашу замену, заменив начальный 064 на 38164, а затем убрав все тире и слэши. Использование preg_replace:

$input = "064-123/4567";
$output = preg_replace('/[\/-]/', '', preg_replace('/^064/', '38164', $input));
echo $input . "\n" . $output;

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