shift

چگونگی استفاده از PHP برای minify کردن خروجی HTML

چگونگی استفاده از PHP برای minify کردن خروجی HTML

عاطفه
دسته: ابزارها  تگ ها: minify html by php , کوتاه کردن کدهای اچ تی ام ال با پی اچ پی , minify html , مینیفای کردن اچ تی ام ال با پی اچ پی

 

من ایده‌ای برای به کار بردن کدهای پی اچ پی minify کننده به دست آوردم که بر روی هر خروجی کدهای اجراشده PHP که متشکل از کدهای HTML هستند اعمال کنم تا این کدهای HTML در هر بار درخواست از سرور به‌طور اتوماتیک minify شوند. برای انجام این کار نیاز به انجام دو کارداریم:
در ابتدا باید یک فایل PHP را ایجاد کنیم و کدهای حذف کردن space و خط جدید را در آن قرار دهیم سپس در مرحله بعدی نیاز داریم تا با استفاده از دستور auto_prepend_file کدهای minify وکدهای HTML که خروجی کد PHP اجراشده هستند را باهم مرتبط کنیم و قطعاً برای انجام این کار نیاز به دسترسی به فایل php.ini داریم.

یک فایل PHP خارج از روت ایجاد کنید. اگر روت شما مورد زیر است:

/var/www/html/

یک فایل به نام minify_php بالای آن ایجاد کنید.

/var/www/minify.php<br />

کد PHP زیر را در آن کپی پیست کنید.

<?php
function minify_output($buffer)
{
$search = array(
'/\>[^\S ]+/s',
'/[^\S ]+\</s',
'/(\s)+/s'
);
$replace = array(
'>',
'<',
'\\1'
);
if (preg_match("/\<html/i",$buffer) == 1 && preg_match("/\<\/html\>/i",$buffer) == 1) {
$buffer = preg_replace($search, $replace, $buffer);
}
return $buffer;
}
ob_start("minify_output");
?>

فایل minify را ذخیره کنید و فایل php.ini را بازکنید. اگر یک سرور شما VPS یا اختصاصی است، گزینه auto_prepend_file را داخل آن جستجو کنید و عبارت زیر را به آن اضافه کنید.

auto_prepend_file = /var/www/minify.php<br />

فایل را ذخیره کنید سعی کنید یک اسکریپت اجراشده PHP را در مرورگر بازکنید و اگر خروجی آن شامل تگ‌های باز / بسته (<html>,</html>) بود، می‌توانید اعمال minify را روی آن ببینید. اگر شما یک صفحه خالی دیدید، به این معنی است که خطایی در minify کد PHP رخ‌داده است که در این مورد، باید display_errors (نمایش خطاها) را فعال کنید یا PHP errorlog را بررسی کنید.


نکته: این راه‌حل، CSS یا جاوا اسکریپت را کوتاه نمی‌کند.


این کد چگونه کار می کند؟

من این کد را از http://www.php.net/manual/en/function.ob-start.php برداشتم. بیایید ببینیم که چگونه کار می‌کند. در این کد، یک تابع به نام “()minify_output” نامیده می‌شود که بافر را می‌گیرد و آن را کوچک می‌کند و دوباره بازمی‌گرداند. حالا بیایید به هر عنصر از آرایه “search$” نگاهی بیندازیم.
عنصر اول:

'/\>[^\S ]+/s'

Space ها و خطوط جدید بعد از تگ HTML را با اولین عنصر از آرایه “replace$” جایگزین می‌کند.

'>'

عنصر دوم:

'/[^\S ]+\</s'

Space ها و خطوط جدید قبل از تگ HTML را با اولین عنصر از آرایه “replace$” جایگزین می‌کند.

'<'

عنصر سوم:

'/(\s)+/s'

چندین space متوالی را پیدا می‌کند و آن‌ها را حذف می‌کند.


حلقه "if" قبل از تابع “()preg_replace”، برای اطمینان از این است که minify فقط بر روی خروجی، HTML اعمال می‌شود. تنها اگر خروجی اسکریپت PHP شامل رشته‌های “<html>” و “<html/>" باشد، minify بر روی آن اعمال می‌شود، برای تضمین این است که هیچ خروجی HTML با minify آن، خراب نشده است.

 

 

نظر خود را بنویسید...
ارسال نظر
لغو