Парсер, превращающий HTML в «динамичный язык»

27 Окт
2011

Хочу поделиться очень даже простым примером парсера HTML-кода на PHP. Может, кто-то и реализовал данную вещь до меня, но вряд ли она является точь в точь такой же. Это что-то вроде шаблонизатора, но только без всяких там закорючек типа <?cmsModule($modulename);?>. По крайней мере, дизайнеру-верстальщику гораздо легче воспринимать и использовать конструкции {request=[запрос]}, чем php-вставки. Подобный синтаксис для шаблонизатора я встречал всего один раз, да и то, опять же, в качестве примера. Нет, я не излагаю тот пример своими словами — он вспомнился мне во время написания текста данной статьи. Я думаю, что пора перейти от скучного вступления к самому примеру.

Lyra Parser

Я решил назвать свой маленький скрипт именно так. Lyra Parser имеет синтаксис следующего рода:
<html>
<head>
<title>{request="title"}</title>

</head>
<body>
<div class="menu">
{request="mainmenu"}
</div>
{request="content"}
</body>

</html>
Скрипт обрабатывает html-файлы следующим образом:
<?php

$modtext = file_get_contents($_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI']);

$modtext = str_ireplace("{request=\"", "<?include\"/requests/", $modtext);
$modtext = str_ireplace("\"}", ".php\";?>", $modtext);

$fileid = "tmp/" . time() . ".php";

file_put_contents($fileid, $modtext);

include $fileid;

?>

Если разобраться в коде парсера, что не составит труда, можно понять, что запросом является имя php-файла, который, если он существует, просто инклудится. Все «запросы» хранятся в папке /requests/. Также не забудьте прописать в файле .htaccess следующее: AddHandler parsed-html html Action parsed-html /parser.php Lyra Parser в действительности существует как opensource-проект. По идее, вы можете дополнять его как вам угодно — Lyra Parser распространяется по лицензии GNU GPL. Cкачать.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх