2003-01-07 16:57:44 UTC
Если вы просто помешаны на оптимизации и хотите убрать всё лишнее из HTML — ненужные переводы строк, кавычки в некоторых атрибутах тегов, вашему вниманию предлагается следующий метод, делающий это за вас.
Такую оптимизацию очень удобно делать в методе @postrocess
класса MAIN
.
####### @postprocess[buffer][attr_string;code;code_num;replace] # вытаскиваем содержимое тегов pre, script в таблицу $code $code[^buffer.match[<(pre|script)(.*?)>(.+?)</\1>][ig]] # меняем теги <pre>...</pre> на <pre>1</pre>, <pre>2</pre> ... и <script> тоже $code_num(1) # код замены $replace{<^match.1.lower[]$match.2>$code_num</^match.1.lower[]>^code_num.inc(1)} $buffer[ ^buffer.match[<(pre|script)(.*?)>(.+?)</\1>][ig]{$replace} ] $buffer[^trim[$buffer]] # attr="*" меняем на attr=* # строка атрибутов у которых надо убрать кавычки $attr_string[class|align|width|bgcolor|border|cellpadding|cellspacing] $buffer[^buffer.match[($attr_string)="(.+?)"][ig]{$match.1=$match.2}] # убираем лишние, но не все!, переводы строк и табуляторы $buffer[^buffer.match[(\s{2,})][g]{^match.1.left(1)}] # вывод результата, # возвращаем теги <pre>, <script> в первоначальное состояние # код замены $replace{<${match.1}$match.2>^taint[as-is][$code.3]</$match.1>^code.offset(1)} $result[^buffer.match[<(pre|script)(.*?)>(\d+)</\1>][g]{$replace}] ####### # Copyright Michael Petrushin (http://misha.design.ru/) # обрезает начальные и конечные символы char. # если char не задан - то обрезает начальные и # конечные пробельные символы @trim[str;char][chr;tbl] ^if(def $str){ $chr[^if(def $char){$char}{\s}] $str[^str.match[^^$chr*][]{}] # $result[^str.match[$chr+^$][]{}] # эта замена существенно быстрее на больших текстах $tbl[^str.match[^^(.*[^^$chr])$chr*^$]] $result[$tbl.1] }{ $result[] }
Определите этот метод в нужной странице или если вы хотите обрабатывать все страницы каталога и подкаталогов ниже или всего сайта то в auto.p
каталога или в корне сайта соответственно.