@TurinTur

Как найти ближайшее вхождение необходимых символов рядом с нужным ключом?

Как исправить регулярку, чтобы она не искала { в начале, а искала ближайшие к необходимому ключу.

$string = 'Привет {name}, это твой номер - {phone} ?';

$data = [
  'phone' => '223344',
  'name' => 'test'
];

foreach($data as $key => $value) {
    $string = preg_replace("#\{.*?$key\}#s", $value, $string);
}

echo $string;

//На выходе - Привет 223344

//Нужно - Привет test, это твой номер - 223344 ?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 2
DevMan
@DevMan
не нужны тут циклы от слова вообще - достаточно https://www.php.net/manual/ru/function.preg-replac...

если сами не раздуплитесь, пинганите меня завтра.
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
У вас есть проблема. Вы решили использовать регулярные выражения чтобы её решить. Теперь у вас две проблемы.


$data = array_combine(
    array_map(function($key) { return '{' . $key . '}'; }, array_keys($data)), //Дописываем к ключам фигурные скобки
    array_values($data)
);

echo strtr($string, $data);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 16:03
5000 руб./за проект
25 апр. 2024, в 16:02
40000 руб./за проект
25 апр. 2024, в 15:58
5000 руб./за проект