X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Как сделать замену данных по регулярному выражению?
MakLeRz
MakLeRz
Topic Starter сообщение 4.3.2017, 7:18; Ответить: MakLeRz
Сообщение #1


Здравствуйте!
Имеется скрипт отправки форм с сайта на e-mail.
Для каждой формы используется свой шаблон .tpl

...
<tr>
<td><strong>%%matr_sever.title%%</strong></td>
<td colspan="2">%%matr_sever.value%%</td>
</tr>
<tr>
<td><strong>%%matr_mezen.title%%</strong></td>
<td colspan="2">%%matr_mezen.value%%</td>
</tr>
...

Код ниже парсит шаблон формы и подставляет в письмо введенные данные:

function tpl($vars) {
$tpl = 'tpl/'.$vars['name'].'.tpl';
if(file_exists($tpl)) {
$template = file_get_contents($tpl);
foreach($vars['getdata'] as $name => $data) {
$template = str_replace(array("%%".$name.".title%%", "%%".$name.".value%%"), array($data['title'], $data['value']), $template);
}
return $template;
}
else {
return false;
}
}

Но есть проблема, если поле остается пустым, то в письме выводится переменная как в шаблоне, например "%%matr_mezen.title%%".
Как модифицировать код парсера, чтобы он искал незамененные переменные и делал вместо них пустые поля.
Предположу, что работает следующий код:

$template = preg_replace('/%%.*?%%/is', 'здесь пусто', $template);
return $template;

 

Но в PHP вообще не соображаю =( и не могу модифицировать код парсера...

0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 27.3.2017, 15:37; Ответить: fedornabilkin
Сообщение #2


(MakLeR @ 4.3.2017, 10:18) *
Но в PHP вообще не соображаю =( и не могу модифицировать код парсера..

Посмотри вот это

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )

(PHP @ 4.3.2017, 10:18) *
В случае, если параметры pattern и replacement являются массивами, preg_replace() поочередно извлекает из обоих массивов по паре элементов и использует их для операции поиска и замены. Если массив replacement содержит больше элементов, чем pattern, вместо недостающих элементов для замены будут взяты пустые строки. В случае, если pattern является массивом, а replacement - строкой, по каждому элементу массива pattern будет осущесвтлен поиск и замена на pattern (шаблоном будут поочередно все элементы массива, в то время как строка замены остается фиксированной). Вариант, когда pattern является строкой, а replacement - массивом, не имеет смысла.



Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
19 uahomka 3119 Сегодня, 18:05
автор: Liudmila
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
149 adw-kupon.ru 19721 Сегодня, 17:41
автор: Liudmila
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
30 freeax 4903 Сегодня, 16:49
автор: Liudmila
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
13 Boymaster 1970 Сегодня, 15:06
автор: Boymaster
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6847 8.4.2024, 17:17
автор: spoyer_ru


 



RSS Текстовая версия Сейчас: 20.4.2024, 18:08
Дизайн