Люди, используйте PHP! Часть третья

Поиск на php

Люди, используйте PHP! Часть третья

Сейчас много говорят о том, что долгая загрузка странички - это плохо, очень долгая загрузка - очень плохо. Использовать меньше графики, навороченных скриптов и аплетов (за исключением, конечно, сайтов, которые посвящены графике или скриптам) - один из основных способов уменьшить объём странички. Этим должны заниматься сами Веб-мастеры. Есть и другой способ - убирать лишние пробелы, переносы строк, заменять длинные теги аналогичными, но короткими. Но зачастую некоторые пренебрегают таким прекрасным способом, говоря что-то вроде "У меня на сайте более 100 страниц!!! Да если каждую редактировать вручную переделывать, это ж с ума сойти можно!!!" (конечно, это не относится к профессиональным Веб-разработчикам). Так почему бы не отдать такую рутинную работу скрипту? Я никаких ПРОТИВ не вижу. Как вы уже догадались, скрипт будет написан на PHP. Итак, начнём.

Первое, что нужно сделать, это решить, что должен делать наш скрипт:
1. Убирать лишние пробелы.
2. Убирать все переводы строк.
3. Заменять некоторые длинные теги короткими.

Некоторые скажут - мало. Я тоже думал "мало", но после того, как я опробовал скрипт на страничке из Dreamweaver`а и та уменьшилась почти на 30 % (и это учитывая то, что Dreamweaver - одна из самых лучших программ для верстки страничек), я убедился, что этого будет достаточно, во всяком случае пока.

Сразу хочу сказать, чтобы в меня не швыряли помидорами заядлые программисты на PHP. Скрипт написан не из соображений компактности и быстродействия (зато в нём легко разобраться, да и скорость тут, в принципе, ни к чему).

Исходный код скрипта с комментариями:

<?php
/* Запускать скрипт следует с параметром files, равным имени файла, подлежащего оптимизации */
/* Открываем файл, с именем, указанным в параметре files, для чтения */
$fp = fopen($files, "r");
/* Читаем данные из файла в массив $soo */
$soo = fread($fp, filesize( $files ));
/* Убираем все переносы строки */
$soo = str_replace("\\n","", $soo);
/* Заменяем все пробелы более одного подряд одним пробелом */
$soo = str_replace(" ","", $soo);
$soo = str_replace("  ","", $soo);
$soo = str_replace("   ","", $soo);
$soo = str_replace("    ","", $soo);
$soo = str_replace("     ","", $soo);
$soo = str_replace("       ","", $soo);
$soo = str_replace("        ","", $soo);
$soo = str_replace("         ","", $soo);
$soo = str_replace("          ","", $soo);
/* Надеюсь, более десяти пробелов подряд нам не встретится */
/* Теперь убираем все пробелы между кавычками > и < */
$soo = str_replace("> <","><", $soo);
$soo = str_replace(">  <","><", $soo);
$soo = str_replace(">   <","><", $soo);
$soo = str_replace(">    <","><", $soo);
$soo = str_replace(">     <","><", $soo);
$soo = str_replace(">      <","><", $soo);
$soo = str_replace(">       <","><", $soo);
$soo = str_replace(">        <","><", $soo);
$soo = str_replace(">         <","><", $soo);
$soo = str_replace(">          <","><", $soo);
/* Убираем все пробелы перед кавычками и после кавычек (думаю больше 5 пробелов не будет)*/
$soo = str_replace("< ","<", $soo);
$soo = str_replace("<  ","<", $soo);
$soo = str_replace("<   ","<", $soo);
$soo = str_replace("<    ","<", $soo);
$soo = str_replace("<     ","<", $soo);
$soo = str_replace(" >",">", $soo);
$soo = str_replace("  >",">", $soo);
$soo = str_replace("   >",">", $soo);
$soo = str_replace("   >",">", $soo);
$soo = str_replace("     >",">", $soo);
/* А теперь заменим нехорошие теги хорошими :) */
$soo = str_replace("<ADDRESS>","<I>", $soo);
$soo = str_replace("<STRONG>","<B>", $soo);
$soo = str_replace("<EM>","<I>", $soo);
$soo = str_replace("<STRIKE>","<S>", $soo);
$soo = str_replace("<BLOCKQUOTE>","<UL>", $soo);
$soo = str_replace("<VAR>","<I>", $soo);
$soo = str_replace("<CITE>","<I>", $soo);
$soo = str_replace("<CODE>","<TT>", $soo);
$soo = str_replace("<KBD>","<TT>", $soo);
$soo = str_replace("<SAMP>","<TT>", $soo);
/* Закрываем файл */
fclose($fp);
/* Теперь открываем этот же файл для записи */
$fp = fopen($files, "w");
/* Заменяем старый код оптимизированным, из массива $soo */
$fw = fwrite($fp, $soo);
/* Закрываем этот файл (теперь уже окончательно) */
fclose($fp);
?>

У странички, оптимизированной этим скриптом будет одно преимущество: если её захотят скопировать, придётся долго разбираться в её исходнике (чтобы не скопировали прямо из броузера, см. статью "Как защитить от копирования текст на вашем сайте" номера 209 Internet Zone).

Советую для удобства сделать страничку с формой (одно поле текста, с именем files и кнопка Submit) и action равным имени скрипта-оптимизатора, где нужно указать имя файла и нажать на кнопочку. Кстати, тогда лучше будет сделать мета-тег в скрипте, возвращающий вас на страничку с формой.

<meta http-equiv="refresh" content="0;URL=Ваша_страничка_с_формой">

Ещё один совет. Чтобы удобнее оптимизировать странички (да и на будущее пригодится), установите на домашнем компьютере Russian Apache и гипертекстовый процессор PHP, тогда можно будет производить отладку скриптов PHP "не отходя от кассы" :) Где взять и как настроить - см. сайт www.web.ru.

На этом и заканчивается серия статей о PHP. Главная задачей этих статей, чтобы вы поняли, как разнообразно применение PHP, какой это мощный язык программирования.

Хочу ещё раз сказать. Люди, используйте PHP!



Опубликовал admin
10 Сен, Среда 2003г.



Программирование для чайников.