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

dimm_mds

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

Здравствуйте!
Собственно САБЖ.

Есть HTML страничка, в которой есть блок template , например:

<p>HTML теги и т.д.</p>
<template>
<p>здесь также HTML</p>
</template>
<p>и далее идет продлжение</p>

И вот, как замениь

<template>
<p>здесь также HTML</p>
</template>

на

<div>
<p>здесь также HTML</p>
</div>
 

Духовность™

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

dimm_mds

Новичок
Сайт готов, шаблонизатор тоже!
Для замены используется stripos, а хотелось бы preg_replace...
 

dimm_mds

Новичок
Моя задача оптимизировать готовый код. Я хочу заменить большую ф-ию с использованием stripos на одну строчку с использование функции preg_replace.

P.S. Я и не говорил, что preg_replace есть парсер...
 

vovanium

Новичок
ну так а в чем проблема, ты бы хоть попробовал сам сделать
 

dimm_mds

Новичок
Пробовал конечно, но что-то не получается.
Пример:
preg_replace('|(<tmpl:my_tmpl>.*</tmpl:my_tmpl>)|sei', $Replace, $Ablock_tmpl)
Работет, если $Replace просто текст, т.е. без тегов и спецсимволов.
При экранировании с помощью preg_quote тоже выдает кучу ошибок...
 

Духовность™

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

vovanium

Новичок
ну во-первых, использовать спецсимвол | не по назначению, далеко не лучшая идея.
во-вторых, почитай для чего именно preg_quote.
в-третьих, раз у тебя $Replace выдает ошибки, то и пиши что у тебя там написано или мы должны должны это угадать?
 

dimm_mds

Новичок
Parse error: syntax error, unexpected '<' in Z:\home\localhost\www\myproj\core.php(103) : regexp code on line 1

Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: &lt;tmpl:Rlist&gt; &lt;div id= &quot;CList&quot;&gt; &lt;p&gt;&lt;img
ит.д.

в конце

in Z:\home\localhost\www\myproj\core.php on line 103
 

vovanium

Новичок
один вопрос, ты знаешь что такое модификатор "e", или ты его просто так вставил в регулярку?
 

dimm_mds

Новичок
после выполнения стандартных подстановок в заменяемой строке интерпретирует ее как PHP-код и использует результат для замены искомой строки.

-~{}~ 07.04.09 18:39:

А вообще видел такое в примере...
 

vovanium

Новичок
ну так оно твой Replace считает php-кодом, а ты вставляешь туда обычный html
 

DiMA

php.spb.ru
Команда форума
> preg_replace не парсер.

Как это не парсер? У меня - парсер! Один рег умеет парсить HTML шаблоны и меняет $var, $var[name] и $var[name][name] на соотв. переменные из контекста вызывающей парсер функции.
 
Сверху