Перейти к содержимому


× Быстрый вопрос
Пользователь месяца
dos1k dos1k 1-й за Май
Очков активности: 1 194 28 тем, 115 сообщений, 4 балла репутации
Сайт: dos1k.ru
ТОП самых активных за этот месяц
  • Фотография Olya23
    #1

    Olya23
    Очков активности: 696 3 темы, 107 сообщений, 4 балла репутации

  • Фотография Rodiola
    #2

    Rodiola (rukodelkovo.ru)
    Очков активности: 414 0 тем, 69 сообщений, 4 балла репутации

  • Фотография maxnik
    #3

    maxnik (konovalovpavel.ru)
    Очков активности: 85.5 0 тем, 19 сообщений, 3 балла репутации

  • Фотография agrx
    #4

    agrx (key-assort.ru)
    Очков активности: 54 0 тем, 18 сообщений, 2 балла репутации

  • Фотография fedornabilkin
    #5

    fedornabilkin (plohoneponyal.ru)
    Очков активности: 42 0 тем, 14 сообщений, 2 балла репутации

  • Фотография BLIK
    #6

    BLIK
    Очков активности: 40.5 Вне конкурса за определение пользователя месяца

  • Фотография Андрей WPMasterKZ
    #7

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 36 0 тем, 24 сообщения, 1 балл репутации

  • Фотография re-search
    #8

    re-search
    Очков активности: 36 5 тем, 9 сообщений, 1 балл репутации

  • Фотография Ixman
    #9

    Ixman (o5cat.ru)
    Очков активности: 24 0 тем, 8 сообщений, 2 балла репутации

  • Фотография Artos
    #10

    Artos
    Очков активности: 21 0 тем, 7 сообщений, 2 балла репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 24.05.2019
  • Яндекс выдача: 17.06.2019
Топ 5 участников по репутации


Как сделать замену данных по регулярному выражению?

#1 MakLeR

MakLeR
  • Неактивные
  • 24 сообщений
  • Репутация: 0
0

Отправлено 04 Март 2017 - 06:18

Здравствуйте!
Имеется скрипт отправки форм с сайта на 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 вообще не соображаю =( и не могу модифицировать код парсера...

 

Вот весь скрипт: https://github.com/P...t/php-ajax-form

 

  • 0

#2 fedornabilkin

fedornabilkin
  • Модератор
  • 1 168 сообщений
  • Репутация: 199

Отправлено 27 Март 2017 - 14:37

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

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

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

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

  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.





Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru