preg_replace замена на случайное число php
Как заменить то, что нашло регулярное выражение, на случайное число от 0 до 9? У меня есть строка и я использовал rand но выводит одну и ту же цифру на всю строку
$phoneMask = "+7 (9xx) xxx-xx-xx";
echo $inputData;
$pg = rand(1,9);
echo preg_replace('/x/', $pg, $phoneMask);
Ответы (1 шт):
Автор решения: Talleyran
→ Ссылка
Потому что вам надо генерировать новую цифру для каждого найденного совпадения в цикле. Но для краткости можно так:
$phoneMask = "+7 (9xx) xxx-xx-xx";
echo preg_replace_callback('/x/', function($matches) {
return rand(1,9);
}, $phoneMask);
UPD
Или если версия PHP >= 7.4, то можно использовать стрелочную функцию и написать ещё короче:
$phoneMask = "+7 (9xx) xxx-xx-xx";
echo preg_replace_callback('/x/', fn() => rand(1,9) , $phoneMask);