| CLASS OPT { //Каталог файлов для обработки var $DIR_FILE="file"; //Каталог оптимизированных файлов var $DIR_OPT="opt"; //Контент файла при его чтении var $CONTENT; //Массив файлов var $ARRAY_FILE; //Уникальный номер файла var $id=""; //==============Функция удаления пробелов===========// //@Удаляем лишние пробелы из html тэгов function delete_gap_tag() { $this->CONTENT[$this->id]=preg_replace_callback('/()/im', create_function('$tag', 'return preg_replace("/s/i", "", $tag[0]);'), $this->CONTENT[$this->id]); return TRUE; } //===============Функция возведения html тэгов в верхний регистр==========// //@Возводит html тэги в верхний регистр function strtoupper_tag() { $this->CONTENT[$this->id]=preg_replace_callback('{()}im', create_function('$tag', 'return $tag[1].strtoupper($tag[2]).$tag[3];'), $this->CONTENT[$this->id]); return TRUE; } //===============Функция удаления комментариев из html файла==============// //@Удаляет любые комментарии function delete_comment() { $this->CONTENT[$this->id]=preg_replace_callback('{()}im', create_function('$comment', 'return str_replace($comment[1].$comment[2].$comment[3], "", $comment[0]);'), $this->CONTENT[$this->id]); return TRUE; } В данной функции можно легко настроить количество обрабатываемых пробелов. //==============Функция удаления лишних пробелов в файле==================// //@Удаляет лишние пробелы в файле //@Удаляет от 2 до 10 лишних пробелов //@Можно редактировать количество function delete_gap_file() { $this->CONTENT[$this->id]=preg_replace("/ss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=preg_replace("/sss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=preg_replace("/ssss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=preg_replace("/sssss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=preg_replace("/ssssss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=preg_replace("/sssssss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=preg_replace("/ssssssss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=preg_replace("/sssssssss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=preg_replace("/ssssssssss/i", " ", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=trim($this->CONTENT[$this->id]); return TRUE; } В данной функции можно настраивать количество обрабатываемых пустых строк. Если Вы хотите чтобы файл сохранял читабельный вид html вёрстки удалите первую строчку функции. Первая строка добавленя в целях уменьшения строк в файле и соответсвенно размера файла, но при добавлении этой строчки абсолютно теряется читабельность html вёрстки. //=================Функция удаления лишних переводов строк==============// //@Удаляет лишние n //@Удаляет от 2 до 4 лишних пропусков строк //@Можно редактировать количество function nl2br_file() { $this->CONTENT[$this->id]=str_replace("n", "", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=str_replace("nn", "n", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=str_replace("nnn", "n", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=str_replace("nnnn", "n", $this->CONTENT[$this->id]); return TRUE; } В данной функции можно редактировать количество обрабатываемых знаков табуляции. //================Функция удаления знаков табуляции=============// //@Удаляет лишние t //@Удаляет от 1 до 3 табов //@Можно редактировать количество function delete_tab() { $this->CONTENT[$this->id]=str_replace("t", "", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=str_replace("tt", "", $this->CONTENT[$this->id]); $this->CONTENT[$this->id]=str_replace("ttt", "", $this->CONTENT[$this->id]); return TRUE; } Главная функция сделана в таком виде лиш потому что программа имеет графический интерфейс, и опции обработки html файлов. Поэтому если вы не хотите делать графический интерфейс, то можете удалить оператор switch и оставить 'case"all":'. //======================Функция перезаписи контента файла===============// //@Записывает в файл новый контент function new_file($file) { $fp=fopen($this->DIR_OPT."/".$file, "w"); flock($fp, LOCK_EX); rewind($fp); fwrite($fp, $this->CONTENT[$this->id]); fclose($fp); } //======================Главная функция ==========================// function haupt_processing($array, $type) { switch($type) { /*Возведение тэгов верхний регистр*/ case"strtoupper": $this->ARRAY_FILE=explode(",", $array); //Разбиваем файлы по запятым while(list($key, $file)=each($this->ARRAY_FILE)) { $this->id=$key; $fp=fopen($this->DIR_FILE."/".$file, "rt") or die(trigger_error("Невозможно открыть файл ".$file, E_USER_ERROR)); //Открывает файл flock($fp, LOCK_EX);//Блокируем файл rewind($fp); //Установка позиции в начало файла; $this->CONTENT[$this->id]=fread($fp, filesize($this->DIR_FILE."/".$file)); //Прочитывает контент файла fclose($fp); //Закрытие файла $this->strtoupper_tag(); //Верхний регистр $this->new_file($file); //Запись } break; /*Все опции оптимизатора*/ case"all": $this->ARRAY_FILE=explode(",", $array); while(list($key, $file)=each($this->ARRAY_FILE)) { $this->id=$key; $fp=fopen($this->DIR_FILE."/".$file, "rt") or die(trigger_error("Невозможно открыть файл ".$file, E_USER_ERROR)); flock($fp, LOCK_EX); rewind($fp); $this->CONTENT[$this->id]=fread($fp, filesize($this->DIR_FILE."/".$file)); fclose($fp); $this->delete_gap_tag(); $this->strtoupper_tag(); $this->delete_comment(); $this->nl2br_file(); $this->delete_tab(); $this->delete_gap_file(); $this->new_file($file); } break; /*Удаление пробелов в тэгах*/ case"delete_grap_tag": $this->ARRAY_FILE=explode(",", $array); while(list($key, $file)=each($this->ARRAY_FILE)) { $this->id=$key; $fp=fopen($this->DIR_FILE."/".$file, "rt") or die(trigger_error("Невозможно открыть файл ".$file, E_USER_ERROR)); flock($fp, LOCK_EX); rewind($fp); $this->CONTENT[$this->id]=fread($fp, filesize($this->DIR_FILE."/".$file)); fclose($fp); $this->delete_gap_tag(); $this->new_file($file); } break; /*Удаление комментариев из файла*/ case"delete_comment": $this->ARRAY_FILE=explode(",", $array); while(list($key, $file)=each($this->ARRAY_FILE)) { $this->id=$key; $fp=fopen($this->DIR_FILE."/".$file, "rt") or die(trigger_error("Невозможно открыть файл ".$file, E_USER_ERROR)); flock($fp, LOCK_EX); rewind($fp); $this->CONTENT[$this->id]=fread($fp, filesize($this->DIR_FILE."/".$file)); fclose($fp); $this->delete_comment(); $this->new_file($file); } break; /*Удаление пробелов из файла*/ case"delete_gap_file": $this->ARRAY_FILE=explode(",", $array); while(list($key, $file)=each($this->ARRAY_FILE)) { $this->id=$key; $fp=fopen($this->DIR_FILE."/".$file, "rt") or die(trigger_error("Невозможно открыть файл ".$file, E_USER_ERROR)); flock($fp, LOCK_EX); rewind($fp); $this->CONTENT[$this->id]=fread($fp, filesize($this->DIR_FILE."/".$file)); fclose($fp); $this->delete_gap_file(); $this->delete_tab(); $this->new_file($file); } break; /*Удаление переносов строк*/ case"delete_br": $this->ARRAY_FILE=explode(",", $array); while(list($key, $file)=each($this->ARRAY_FILE)) { $this->id=$key; $fp=fopen($this->DIR_FILE."/".$file, "rt") or die(trigger_error("Невозможно открыть файл ".$file, E_USER_ERROR)); flock($fp, LOCK_EX); rewind($fp); $this->CONTENT[$this->id]=fread($fp, filesize($this->DIR_FILE."/".$file)); fclose($fp); $this->nl2br_file(); $this->new_file($file); } break; } } }//End class |