ТС, советую почитать Жадные и ленивые квантификаторы.
// захват любого блока <div> в строке даже пустого x = x.match(/<div[^>]*>[^<]*<\/div>/g)
{php} блок он есть http://www.smarty.net/docsv2/ru/language.function.php.tpl просто у вас он скорее всего ругается на переменные smarty внутри этого блока.
Такая там встроенная штука есть http://www.smarty.net/docsv2/ru/language.modifier.regex.replace.tpl
{foreach from=$paginator->getPageList() item=page} <a href="{$page.href|regex_replace:"#]\[\d+]#":"][]"}" {if $page.act}class="act"{/if}>{if $page.class=='left'}«{$page.n}{elseif $page.class=='right'}{$page.n}»{else}{$page.n}{/if}</a> {/foreach}
А не должен http://www.smarty.net/best_practices он есть в документации. Платный продукт а использует либу по GPL лицензии(хоть не запрещено).. как то не комильфо
Замените на это, другой pattern
$page.href = preg_replace("#]\[\d+]#", "][]", $page.href);
v_ovan, щас глянул, у него шаблонизатор smarty. А у него нет встроенной функции preg_replace и поэтому нужен блок {php}..{/php}
{foreach from=$paginator->getPageList() item=page} {php}$page_href=preg_replace('/\[\d+?\]/i', '[]', $page.href);{/php} <a href="{$page_href}" {if $page.act}class="act"{/if}>{if $page.class=='left'}«{$page.n}{elseif $page.class=='right'}{$page.n}»{else}{$page.n}{/if}</a> {/foreach}
LEOnidUKG, smarty вроде, там если память не изменяет надо php код объявлять в блок {php}code..{/php}
А регулярки все рабочие
Вторые четные скобки очистит
preg_replace("#]\[\d+]#", "][]", $string);
Eteg от хэша HTML документа - очень интересно.. в чем логика такого Etega?
У вас получается, что скрипт прошел весь цикл(запросы к БД, сборка шаблона) и только на финальной стадии перед отдачей клиенту заголовков и контента скрипт сверяет if-none-match хеша уже готового к отдаче контента.
Тоесть скрипт нигде не прервался к примеру после запроса к БД где у вас есть временная метка и вы можите сравнить по if-modified-since отдать 304 ответ и прервать скрипт. Для чего и нужен last-modified.
А вся эта обвеска виджетов, меню и прочего - все это на мой взгляд параллельно.. есть основной контент: статья ну и к примеру дата последнего комментария к этой статье.
Ну а страницы на которых контент очень часто обновляется, тогда лече вообще не отдавать никаких заголовков.
Как предлагали выше хранить БД в виде ПХП файла.
// создает файл db.php где объявлены $ID, $NAME, $BIRTH, $VES, $ADRESS с заполненными данными // в случаи обновления base.txt обновляется и db.php с новыми данными if (file_exists(__DIR__."/db.php")) { include(__DIR__."/db.php"); if ($careded_this_database < filemtime(__DIR__."/base.txt")) create_db(); } else { create_db(); } function create_db() { global $ID, $NAME, $BIRTH, $VES, $ADRESS; // глобальной области видимости $fp = fopen(__DIR__."/base.txt", "r"); while (!feof($fp)) { $line = fgets($fp); list($id, $name, $birth, $ves, $adress) = explode("\t", trim($line)); $ID[$id] = $id; $NAME[$id] = $name; $BIRTH[$id] = $birth; $VES[$id] = $ves; $ADRESS[$id] = $adress; } file_put_contents(__DIR__."/db.php", "<?php\n". "\$careded_this_database=".filemtime(__DIR__."/base.txt"). ";\$ID=".var_export($ID, true). ";\$NAME=".var_export($NAME, true). ";\$BIRTH=".var_export($BIRTH, true). ";\$VES=".var_export($VES, true). ";\$ADRESS=".var_export($ADRESS, true). ";\n?>"); include(__DIR__."/db.php"); } var_dump($ID, $NAME, $BIRTH, $VES, $ADRESS);
memcached
Для чтения из файла строк луче использован fgets, fscanf
Быстрый обмен, Спасибо ТС.