W3docs

php_strip_whitespace()

В этой статье рассматривается функция PHP php_strip_whitespace(): синтаксис, принцип работы и практические примеры использования.

Функция PHP php_strip_whitespace() читает PHP-файл и возвращает его содержимое с удалёнными комментариями и лишними пробелами — именно тот результат, который вы получили бы при запуске файла через php -w в командной строке. На этой странице описаны синтаксис, что именно функция удаляет (и что нет), полный рабочий пример, особенности производительности, а также отличия от строковых функций обрезки, с которыми её часто путают.

Синтаксис

php_strip_whitespace(string $filename): string
ЧастьЗначение
$filenameПуть к PHP-файлу для чтения и обработки.
Возвращаемое значениеСтрока с исходным кодом файла, из которого удалены комментарии и лишние пробелы. В случае ошибки (например, если файл не существует) возвращает пустую строку.

Функция не выполняет файл — она лишь токенизирует его исходный код. Она также не изменяет исходный файл на диске; вместо этого она возвращает обработанный код в виде новой строки, оставляя вам право решать, что с ним делать.

Что удаляется

php_strip_whitespace() использует собственный токенизатор PHP, поэтому удаление выполняется с полным пониманием синтаксиса — функция никогда не сломает код, убрав значимые пробелы. Конкретно удаляется следующее:

  • Все стили комментариев: // строка, # строка и /* блок */ (включая /** докблоки */).
  • Лишние пробелы между токенами: объединяются последовательности пробелов, табуляций и переводов строк.

Функция аккуратно сохраняет пробелы внутри строковых литералов и любое содержимое вне тегов <?php … ?> (обычный HTML), поскольку их удаление изменило бы вывод программы.

Как использовать php_strip_whitespace()

Передайте путь к файлу, который нужно обработать. Пример ниже создаёт небольшой файл, а затем обрабатывает его, чтобы можно было увидеть разницу:

<?php
// Create a sample file with comments and generous spacing.
$source = <<<'PHP'
<?php

// Greet the visitor.
function greet(string $name): string
{
    /* Build the message */
    return "Hello,   $name!";   // spaces inside the string are kept
}

echo greet("World");
PHP;

file_put_contents('sample.php', $source);

// Strip comments and whitespace.
$stripped = php_strip_whitespace('sample.php');

echo $stripped;

Комментарии и лишние пустые строки исчезнут, тогда как пробелы внутри строки "Hello, $name!" останутся нетронутыми, поскольку их удаление изменило бы поведение программы.

Если файл не удаётся прочитать, функция возвращает пустую строку, а не вызывает фатальную ошибку:

<?php
$result = php_strip_whitespace('does-not-exist.php');

var_dump($result === ''); // bool(true)

Когда использовать

  • Выпуск production-сборки. Удаление комментариев и пробелов уменьшает размер исходных файлов и незначительно сокращает время парсинга при холодной загрузке (при включённом кеше опкодов, например OPcache, этот выигрыш практически нивелируется после первого запроса).
  • Обфускация распространяемого кода. Удаление комментариев и докблоков делает распространяемый исходный код менее самодокументированным — это лёгкая, но не надёжная, форма обфускации.
  • Изучение токенизированного вывода. Быстрый способ посмотреть на исходный код файла без комментариев.

Соображения о производительности

Используйте php_strip_whitespace() только для production-копий ваших файлов, но не для рабочих исходников. В процессе разработки комментарии и пробелы делают код читаемым, отлаживаемым и поддерживаемым; удаление их на месте лишило бы вас этих преимуществ. Стандартный подход — хранить исходники с комментариями под контролем версий и генерировать очищенные копии как часть процесса сборки/деплоя.

Обратите внимание, что при использовании OPcache (входит в состав современного PHP и включён по умолчанию) скомпилированный байткод кешируется после первого запроса, поэтому экономия времени парсинга от обработки файлов минимальна. Более ощутимым преимуществом остаётся уменьшение размера файлов.

php_strip_whitespace() vs. trim()

Несмотря на похожие названия, эти функции не имеют ничего общего — что является распространённым источником путаницы:

ФункцияРаботает сУдаляет
php_strip_whitespace()PHP-файломкомментарии + лишние пробелы из исходного кода
trim()строковым значениемпробелы в начале и конце строки
ltrim() / rtrim()строковым значениемпробелы только с одного конца

Если ваша цель — очистить строку (например, ввод из формы), используйте trim(), а не php_strip_whitespace().

Связанные функции

  • file_get_contents() — читает необработанное содержимое файла без каких-либо удалений.
  • readfile() — читает файл и выводит его содержимое прямо в выходной буфер.
  • highlight_string() — противоположная цель: отображает PHP-исходник с подсветкой синтаксиса.
  • Комментарии PHP — синтаксисы комментариев, которые удаляет эта функция.

Заключение

php_strip_whitespace() возвращает копию PHP-файла без комментариев и лишних пробелов, пропуская его через токенизатор PHP, что позволяет безопасно уменьшить размер файлов без нарушения работоспособного кода. Используйте её только для production-сборок, помните, что она работает с файлами (а не строками), и не путайте с trim().

Практика

Практика
Какова функциональность функции PHP 'trim()' при использовании в программах?
Какова функциональность функции PHP 'trim()' при использовании в программах?
Was this page helpful?