Условная замена PHP PCRE2Php

Кемеровские программисты php общаются здесь
Anonymous
Условная замена PHP PCRE2

Сообщение Anonymous »

Я пытаюсь заменить строку условным способом, используя preg_replace в PHP.
Идея довольно проста и работает в регулярном выражении 101, но когда я пробую ее в PHP, это не работает. >
Шаблон поиска:

^([0-9]{3})-?([0-9]{3 })-?([0-9]{3})-?([0-9]{3})?$

Заменить шаблон:

[$1.$2.$3.${4:+$4:000}]

По сути, цель — форматировать строки. Допустимые строки состоят из 9 или 12 цифр в группах по 3 цифры. Если групп 4, это нормально, если 3, мне нужно добавить «000» в качестве последней группы.
Пример — ввод строки:

Код: Выделить всё

009026405
01009556500 (invalid)
226-356-839
009-513-213
000147765000
Ожидаемый результат:

Код: Выделить всё

[009.026.405.000]
01009556500 (unchanged)
[226.356.839.000]
[009.513.213.000]
[000.147.765.000]
Источник PHP:

Код: Выделить всё


Подробнее здесь: [url]https://stackoverflow.com/questions/78702568/php-pcre2-conditional-substitution[/url]

Вернуться в «Php»