Замена строки определенными элементами в массиве (PHP) - PullRequest
0 голосов
/ 29 января 2010

У меня есть такой абзац текста:

$ parase = "Привет, {Customer.name}, Вам {Customer.age} лет. Вы родились в год {Customer.birthdate} ";

Я хочу заменить это содержимым массива, таким как

array('Customer' => array('name'=>'Tom', 'age'=>8, 'birthdate'=>'1980-01-01'))

Мой вопрос: каков наилучший способ сделать это? Если у вас есть предложение о том, как форматировать текст, это также будет полезно. Я предполагаю, что вам придется использовать какое-то регулярное выражение, например preg_filter или preg_replace.

Ответы [ 3 ]

2 голосов
/ 29 января 2010

Вы можете использовать для этого preg_replace_callback(). Просто сопоставьте \{(.+)\.(.+)\} и соответствующим образом индексируйте массив.

2 голосов
/ 29 января 2010

http://php.net/manual/en/function.sprintf.php

$format_string = "Hello there %s, You are %d years old. You were born in the year %s";
$paragraph = sprintf($format_string, 
                     $customer['name'], 
                     $customer['age'], 
                     $customer['birthdate']);
0 голосов
/ 29 января 2010

Если формат предложения в $ абзаце всегда будет соответствовать синтаксису фигурных скобок, вы можете использовать str_replace ().

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