Убирать комментарии из PHP-файлов — задача простая только на первый взгляд. Возьмёшь грубый regex — сломаешь URL в строках, регулярные выражения и весь рабочий код. Разбираемся, как делать это безопасно.
Зачем убирать комментарии из PHP
- Уменьшить вес файлов — комментарии занимают 5–30% от размера PHP-файла
- Скрыть структуру проекта — комментарии часто содержат подсказки о логике, TODO, настройки окружения
- Подготовить код к продакшену — чистая кодовая база без черновых пометок
- Сдать проект клиенту без следов разработки — комментарии типа «тут костыль, потом переделать» лучше убрать
Почему нельзя просто удалить через regex
Классический способ — прогнать PHP через regex и удалить всё, что начинается с //, # или /* */. Проблема в том, что этот regex сломает:
1. URL внутри строк
$url = 'https://kuznya-studio.site/'; // ← // в URL не комментарий!
Regex увидит // и удалит всё после него — включая остаток URL. Результат: $url = 'https: — синтаксическая ошибка.
2. Regex-паттерны в коде
preg_match('/^[a-z]+/i', $input); // ← // внутри паттерна
То же самое — первое // обрежет regex, PHP упадёт.
3. Данные, содержащие символы комментариев
$code = 'echo "test"; # inline comment';
Regex удалит # inline comment внутри строки — сломает данные.
Правильный способ — token_get_all()
В PHP есть встроенная функция token_get_all(), которая разбирает код так же, как сам интерпретатор PHP. Она точно знает, где начинается комментарий, а где строка.
Логика такая:
- Разбираем код на токены
- Проходим по токенам
- Удаляем только те, что помечены как
T_COMMENTиT_DOC_COMMENT - Всё остальное — оставляем как есть
Этот подход невозможно сломать — токенизатор знает где код, где строки, где комментарии. Именно так работает наш Минификатор PHP.
Что удаляется, что сохраняется
| Удаляется | Сохраняется |
|---|---|
// однострочный | URL в строках 'https://...' |
# хеш-комментарий | Regex-паттерны '/.../' |
/* блочный */ | HTML внутри шаблонов |
/** doc-блок */ | Весь рабочий код |
Наш инструмент
Мы сделали бесплатный Минификатор PHP — работает через token_get_all, безопасно удаляет комментарии:
- До 10 файлов за раз
- До 5 МБ на файл
- Два пресета: «Только комментарии» и «Стандартный»
- Не трогает URL, regex и рабочий код
- Не хранит файлы на сервере
Как использовать:
- Откройте /tools/php-minifier/
- Перетащите PHP-файлы или вставьте код
- Нажмите «Убрать комментарии»
- Скачайте результат
Когда НЕ стоит убирать комментарии
- В библиотеках и framework-коде — там комментарии часто нужны для документирования API
- В файлах с лицензионными блоками — некоторые лицензии требуют сохранять copyright
- В коде, который будет дальше правиться вами — комментарии помогают быстро понять логику
- В файлах с @-аннотациями — например,
/** @var Type */— их читают анализаторы и IDE
Для продакшен-версии готового проекта — убирать. Для разработки — оставлять.
Что даёт минификация PHP
Пример из практики: файл 45 КБ после обработки становится 32 КБ. Экономия — 30%. Плюс — в коде не остаётся следов разработки.
Совмещайте с минификатором PHP и gzip-сжатием — получите файлы на 70–80% меньше исходных.
Итог
Убирать комментарии из PHP — задача с подвохом. Прямой regex сломает код. Правильное решение — токенизация через token_get_all — работает безошибочно.
Если нужно быстро почистить проект — используйте наш инструмент. Работает за секунды, не портит код.