Как я могу разобрать текст заполнителя в файле HTML, который затем заменяется пользовательскими тегами? - PullRequest
0 голосов
/ 27 апреля 2011

Сначала немного справочной информации. Я создаю электронные письма HTML на своем рабочем месте, и весь процесс очень утомителен. Это немного похоже на это ...

  1. Разметка кода для HTML с использованием таблиц и некоторые CSS
  2. Разбор HTML и CSS с использованием Premailer , поэтому весь CSS встроен
  3. Проверка HTML работает во всех почтовых клиентах
  4. Создайте копию встроенной версии HTML и начните добавлять проприетарные переменные в инструмент электронной почты, используемый для отправки электронных писем, т.е. <%=constant.first_name%>, <%=unsubscribe_link%>
  5. Проверьте в почтовом клиенте, работает ли он, и клиент доволен. Если нет, повторите шаги с 1 по 5.

Итак, как вы видите, через некоторое время это становится действительно утомительным.

Я хотел бы создать сценарий командной строки, похожий на Premailer, который позволяет мне анализировать HTML-файл с переменными, хранящимися в нем, не разрушая текст примера уже в HTML. Таким образом, при предварительном просмотре HTML все выглядит просто замечательно.

Например ...

Сохранить имя функции как переменную для собственного использования.

$first_name = "<%=constant.first_name%>

Затем сообщите парсеру, какое слово (слова) заменить соответствующей переменной.

<p>My name is <!-- $first_name -->Gavin<!-- /$first_name --></p>

Так что конечный результат будет выглядеть примерно так:

<p>My name is <%=constat.first_name%></p>

Возможно ли такое? Есть ли лучший синтаксис, который я мог бы, пользовательский тег, такой как <first_name>Gavin</first_name>, если браузер может обработать его.

Любой совет полезен. :)

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

У меня похожая ситуация
Я создал «шаблон формата», подобный следующему:

<?php // section1 $var1/$var2  ?>
<head>
   <title>$var1</title>
   <meta name="description" content="$var2">
</head>
<?php // section2 $var1/$var2  ?>
<body>
   hello: <p>$var1</p>
   news for you: <p>$var2</p>
</body>

это правильный код php и правильный код html, так что вы можете редактировать его с помощью dreamwaver или аналогичного, и вы также можете разместить его.
тогда скрипт php заменяет все вхождения переменных во всех разделах.

1 голос
/ 27 апреля 2011

Я видел, как это было сделано, прежде чем использовать синтаксис, такой как:

{assign_variable:first_name="Jesse"}

Затем вы можете использовать его следующим образом:

{first_name}

То, как вы это проанализируете (при условиивы используете PHP) было бы что-то вроде:

<?php
// Our Template Code
$strHTML = <<<EOT

    {assign_variable:first_name="Jesse"}
    {assign_variable:last_name="Bunch"}

    Hello, {first_name}!

EOT;

// Get all the variables
$arrMatches = array();
preg_match_all('/\{assign\_variable\:([a-zA-Z\_\-]*)\=\"([a-zA-Z0-9]+)\"\}/', $strHTML, $arrMatches);

// Remove the assign_variable tags
$strHTML = preg_replace('/\{assign\_variable\:([a-zA-Z\_\-]*)\=\"([a-zA-Z0-9]+)\"\}/', '', $strHTML);

// Combine them into key/values
$arrVariables = array_combine($arrMatches[1], $arrMatches[2]);
foreach($arrVariables as $key=>$value) {

    // Replace the variable occurrences
    $strHTML = str_replace('{' . $key . '}', $value, $strHTML);

}

// Send the parsed template
echo $strHTML;

который выводит:

Hello, Jesse!

Обратите внимание, это очень простой пример.Вот некоторые улучшения, которые необходимо внести в этот код перед его использованием в производстве:

  • Измените регулярное выражение, чтобы разрешить правильные символы.
  • Возможно, реализуйте лучший метод замены, чем цикл
  • Проверка на ошибки синтаксического анализа
  • Тест производительности

В общем, я думаю, вы поняли идею.Надеюсь, это направит вас в правильном направлении.

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