Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

PageProducer на РHP   Найти похожие ветки 

 
Undert ©   (2004-03-25 23:45) [0]

Есть в Делфи такой компонент PageProducer, для тех кто ни разу не использовал - рендеринг текстов с тегами, т.е. есть текст какой-либо и в нем есть теги вида <#name param1=value1 paramN=valueN>, компонент находит теги и вызывает процедуру в параметрах которой передаются название тега и его параметры.

Вопрос, как такое же реализовать в PHP с такой же скоростью не используя StrPos и если есть где-нибудь пример, то где его можно посмотреть ?


 
Undert ©   (2004-03-26 10:28) [1]

Здесь что нету phpшников ? :)


 
blackman ©   (2004-03-26 10:41) [2]

Вот тут посмотри
http://blackman.wp-club.net/cfaq/index.php?catid=14
"Управление сайтом"
http://blackman.wp-club.net/cfaq/index.php?qid=2&catid=14
или
"Вперед", "Назад" и "Оглавление"
http://blackman.wp-club.net/cfaq/index.php?qid=23&catid=14
И что еще там было...


 
Undert ©   (2004-04-04 18:16) [3]


> blackman ©


У тебя там ничего про то что я имел в виду не сказано.

Может кто-нибудь всё же поможет ?  :)


 
DVM ©   (2004-04-04 18:19) [4]


> Вопрос, как такое же реализовать в PHP с такой же скоростью
> не используя StrPos

StrPos в PHP самое быстрое что есть. Регулярные выражения медленнее еще в десятки раз. Написать замену на C. В тысячи раз быстрее PHP будет.


 
Undert ©   (2004-04-04 18:23) [5]


> DVM ©  


Хмм.. раз так уж все дико, то есть ли хотя бы быстрый метод разбиения строки типа:
param1=value1 paramN=valueN
на ассоциативный массив ? или тоже "вручную"?


 
DVM ©   (2004-04-04 18:30) [6]

Explode() наверное.


 
Undert ©   (2004-04-04 18:43) [7]


$TagSpecial = "#";

function commentStr($str) {
 return "<!--// $str //-->";

}; //func

function ExecuteTag($tagName, $params) {
 $result = commentStr($tagname);

//if ($tagName="..") $result = ..

}; //func

function ExecuteProducer($page) {
 $_from = 0;
 $_rbtag = substr_count($page, "<$TagSpecial");
 $_rctag = substr_count($page, ">");
 while (strpos($page, "<$TagSpecial", $_from) === true) {
   $_btag = strpos($page, "<$TagSpecial", $_from);
   $_ctag = strpos($page, ">", $_btag);
   $_from = $_ctag + 1;
   $_tlen = $_ctag - $_btag - 2;
   $_rplc = substr($page, $_btag, $tlen + 2);
   $_tstr = trim(substr($page, $_btag+2, $_tlen));
   $_tarr = explode(" ", $_tstr);
   $params = array();
   for ($i=0;$i<count($_tarr);$i++) {
      if (strpos($_tarr[$i], "=") === true) {
        $_tmp = explode("=", $_tarr[$i]);
        $params[$_tmp[0]] = $_tmp[1];
      }; //if
   }; //for
   $page = str_replace($_rplc, ExecuteTag($_tarr[0], $params), $page);
 }; //while
if ($_rbtag!=$_rctag) {
 return "Произошла ошибка!";
} else {
 return "Сценарий выполнен!";
};
}; //func


А разве это не медленно ?


 
Undert ©   (2004-04-04 18:48) [8]

P.S. Написал за 5 минут, проверить негде, но принцип думаю ясен


 
DVM ©   (2004-04-04 18:51) [9]

Честно говоря, я бы сделал также скорее всего. Не сказать что быстро, но и не сильно медленно. Удовлетворительно.
Я не настолько знаю PHP чтобы утверждать, что другого способа нет, но кажется это так.


 
nikkie ©   (2004-04-04 18:56) [10]

не могу я врубиться зачем городить PageProducer на php, когда и так php-код можно размещать внутри html-страницы. PageProducer придуман из-за того, что такого сделать на дельфи нельзя.


 
DVM ©   (2004-04-04 18:59) [11]


> nikkie ©   (04.04.04 18:56) [10]

я думаю это надо для реализации так называемого шаблонизатора, кто знает что такое - поймет. Пример - лебедевский Parser.


 
Undert ©   (2004-04-04 19:00) [12]


> nikkie ©  


Дык создавать темплейты, где будут лежать свои теги ...

Проще ж сделать так: www.misite.ru/ru/forum/2/96/

И того получаем: index.php?lang=ru&template=forum&forumid=2&message=96, где читаем tpl/forum.htt и выводим согласно заданным в нем тегам, где файл index.php даже не знает что это файл форума!!


 
Undert ©   (2004-04-04 19:01) [13]

Вернее index.php?lang=ru&template=forum&p1=2&p2=96


 
Undert ©   (2004-04-04 19:02) [14]

А функции вызываемые темплейтов сами разберутся что есть p1 и p2



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.035 c
14-1081057876
SPeller
2004-04-04 09:51
2004.04.25
Посылать нынче некуда...


6-1077881008
4ward
2004-02-27 14:23
2004.04.25
работа с TClient/TServerSocket


6-1077813783
Awod
2004-02-26 19:43
2004.04.25
Фильтрация почтовых сообщений


3-1080298108
}|{yk
2004-03-26 13:48
2004.04.25
Упорядочивание


11-1065432905
chuckloon
2003-10-06 13:35
2004.04.25
Bitmap и EMF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский