Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> регуляное выражение
45king  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



хы
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 287
Пользователь №: 29514
На форуме: 5 лет, 7 месяцев, 19 дней
Карма:




<title>{TI}</title>
<body>


<!-- BEGIN pe-->
<a href="">{pe.HEADER}</a><br />
<!-- END pe-->
{TU}

<!-- BEGIN uu-->
{uu.HEA}<br />
<!-- END uu-->

как составить регулярное выражение

чтобы вывести все теги
только не выводить тот тег где он заключен в <!-- BEGIN <!-- END

делал так не получаеться

preg_match('/(.* )BEGIN--END/us',$this->template,$ej);





Спустя 3 часа, 59 минут, 23 секунды (23.01.2012 - 08:54) Commander Keen написал(а):
смею утверждать, что регулярные выражения работают со строками, а не с абзацами ) то есть не выйдет у тебя одной регуляркой всё выбрать. я бы распарсил текст и при последовательных вхождениях строк:
<!-- BEGIN pe-->

пропускал бы всё, до очередного <!-- END pe--> +1строка. Если конечно формат именно такой и не меняется.

Если не прав - поправьте плс )

Спустя 1 час, 35 минут, 1 секунда (23.01.2012 - 10:29) Игорь_Vasinsky написал(а):
:lol: тут

str_replace("{pe.HEADER}", $this->template,$ej);

достаточно

и preg_match - ищет совпадения, а preg_replace - производит замену по шаблону.

Спустя 19 минут, 24 секунды (23.01.2012 - 10:49) 45king написал(а):
Игорь_Vasinsky
str_replace("{pe.HEADER}", $this->template,$ej);

интересно а как мне узнать что имеенно этот тег находиться в <!-- BEGIN

Спустя 1 минута, 1 секунда (23.01.2012 - 10:50) Игорь_Vasinsky написал(а):
а зачем??? у тя такие метки {pe.HEADER} ещё есть в коде?
регулярки не для понтов используют, а для дела.

Спустя 21 минута, 31 секунда (23.01.2012 - 11:11) 45king написал(а):
Игорь_Vasinsky
можешь подсказать как быть в данной ситуации

вот код

<?php
include "config.php";
include "function.php";
include "tempelate.php";

$tpl->load('main.tpl');

$ca=$DB->select("SELECT * FROM chat");
$ca1=$DB->select("SELECT * FROM novosti");
foreach($ca as $row) {
$tpl->block('pe',array(
'{pe.HEADER}'=> $row['text']
));

}
$tpl->block_vars(array(
'{TI}'=> "llll",
'{TU}'=>"777777777"
));

foreach($ca1 as $ro) {
$tpl->block('uu',array(
'{uu.HEA}'=> $ro['title']
));


}
?>


вот шаблонизатор

<?php
class
template
{
var $template;
function load($way)
{
if(empty($way) || !file_exists($way))
{
die('Template error, no '.$way);
}
else
{
$this->template = file_get_contents($way);
}
}


function block($ff,$array)
{
$this->vars=$array;
preg_match('/<!-- BEGIN '.$ff.'-->(.*)<!-- END '.$ff.'-->/us',$this->template,$eee);
echo strtr($eee[1],$this->vars);
}
function block_vars($array)
{
$this->vars=$array;
echo strtr($this->template,$this->vars);
}

}

$tpl = new template;
?>


и вот шаблон

<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>
{TI}</title>
<body>


<!-- BEGIN pe-->
<a href="">{pe.HEADER}</a><br />
<!-- END pe-->
{TU}

<!-- BEGIN uu-->
{uu.HEA}<br />
<!-- END uu-->
</body>
</html>


все работает есть одно но как запретить чтоб этот блок function block_vars($array) не выводил на экран тег который находиться в тегах
<!-- BEGIN pe-->
<a href="">{pe.HEADER}</a><br />
<!-- END pe-->
а он его выводит тем самым портит картину


Спустя 5 минут, 54 секунды (23.01.2012 - 11:17) Игорь_Vasinsky написал(а):
скриншот страницы сделай, не понял ничего.

у тя вообще - вот замена

echo strtr($eee[1],$this->vars);

Спустя 17 минут, 22 секунды (23.01.2012 - 11:34) 45king написал(а):
user posted imageвот скрин выделино красным

вот эта функция function block_vars($array)в шаблонизаторе бирет и выводит теги которые находяться в оболочке BEGIN END и пытаеться их заменить а так как заменить не чем берет их и выводит !!мне нужно как то запретить этой функции чтоб она не выводила теги в оболочке BEGIN END

Спустя 24 минуты, 11 секунд (23.01.2012 - 11:59) Игорь_Vasinsky написал(а):
Цитата
preg_match('/<!-- BEGIN '.$ff.'-->(.*)<!-- END '.$ff.'-->/us',$this->template,$eee);


замени на мой кусок
str_replace("{pe.HEADER}", $this->template,$ej);

Спустя 13 минут, 55 секунд (23.01.2012 - 12:13) Игорь_Vasinsky написал(а):
а.. стой... не так просто...

function block($ff,$array)
{
$this->vars=$array;
str_replace("{pe.HEADER}", $this->template,$eee);
}

Спустя 21 минута, 53 секунды (23.01.2012 - 12:34) 45king написал(а):
Игорь_Vasinsky
все разобрался спасибо всем кто помогал
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса