Замена PHP - PullRequest
       11

Замена PHP

0 голосов
/ 28 августа 2011

Я искал некоторое время и не смог ничего придумать. У меня есть страница, которая содержит HTML и PHP.

<div>%%replace_me%%</div>


<? replaceStr("replace_me", "foobar"); ?>

Мне нужна функция, которая изменит указанную выше строку %% на foobar, чтобы html выглядел следующим образом:

<div>foobar</div>

Текст Всегда будет окружен процентными знаками, но не всегда заключен в div. На странице будет php, а также %% vars, поэтому сохранение страницы в $ var и замена str мне не помогли.

Ответы [ 2 ]

1 голос
/ 28 августа 2011

Вам нужно будет добавить ob_start() в начале вашей страницы, чтобы гарантировать, что вывод буферизуется и не отправляется пользователю, пока у вас не будет возможности его проанализировать.Затем я попытался бы собрать все вызовы на replaceStr() до тех пор, пока не будут выведены все возможные теги %%, и вы будете готовы заменить их все за один раз.Затем, это должно сделать трюк:

function replace_str(&$body, $tag, $replace) {
   str_replace('%%'.$tag.'%%', $replace, $body);
}
$body = ob_get_clean();
replaceStr($body, 'replace_me', 'foobar');
// other calls to replaceStr...
echo $body
ob_end_flush();
1 голос
/ 28 августа 2011

Звучит так, будто вы ищете шаблонизатор. Smarty является популярным для PHP.Также есть другие .

Поймите, что в контексте серверного кода (PHP) нет "DOM" или даже "HTML" в том смысле, что вы 'повторяюВ .php файле есть HTML, но вы не можете так с ним взаимодействовать.Это просто текст в файле, ожидающий отправки клиенту после того, как механизм PHP интерпретирует код PHP.

Анализ DOM и все такое происходит в браузере после доставки содержимого клиенту, чтопосле запуска серверного кода.Есть также PHP DOM-парсеры , но они предназначены для потребления HTML и манипулирования им внутри кода PHP, а не для взаимодействия с разметкой HTML, которая находится вне кода PHP в том же файле .php.

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