Php strip whitespace: примеры (PHP)

Удаление пробелов и комментариев из PHP-файлов с помощью php_strip_whitespace
Раздел: Информация о PHP
php_strip_whitespace(string $filename): string

Функция php_strip_whitespace возвращает исходный код PHP-файла с удаленными комментариями и пробельными символами. Основное применение – грубая оценка объема реального кода или создание упрощенных копий скриптов для анализа.

Аргументы функции

Функция принимает один обязательный аргумент:

  • $filename (string) – путь к обрабатываемому PHP-файлу.

Функция читает указанный файл, удаляет из его содержимого комментарии (как однострочные //, #, так и многострочные /* */), а также лишние пробелы, табуляции и переводы строк, после чего возвращает "очищенный" код. Если файл не существует, возвращается пустая строка.

Короткие примеры использования

Пример с простым файлом, содержащим комментарии и лишние пробелы.

Исходный файл test.php
<?php

// Это однострочный комментарий
    $a = 1;		
# Это еще один комментарий
/*
Многострочный
комментарий
*/
echo "Hello";

?>
Вызов функции
<?php
$result = php_strip_whitespace('test.php');
echo $result;
?>
Результат выполнения
<?php
 $a = 1; echo "Hello"; ?>

Обработка несуществующего файла.

<?php
$result = php_strip_whitespace('missing.php');
var_dump($result); // string(0) ""
?>
Похожие функции в PHP

Прямых аналогов для обработки файлов нет, но есть функции для работы со строками:

  • trim(), ltrim(), rtrim() – Удаляют пробельные символы только с краев строки, не затрагивая внутренние пробелы и комментарии.
  • preg_replace() – Позволяет удалять пробелы и комментарии через сложные регулярные выражения, но требует осторожности.

php_strip_whitespace используется для анализа файлов, а trim() – для очистки пользовательского ввода или строковых данных. preg_replace() подходит для тонкой настройки процесса очистки.

Аналоги в других языках

Прямых встроенных аналогов в Python, JavaScript или MySQL обычно нет. Подобная функциональность достигается сторонними библиотеками или вручную.

Python (использование библиотеки ast)
import ast
import inspect

def strip_php_whitespace(filepath):
    with open(filepath, 'r') as file:
        source = file.read()
    tree = ast.parse(source)
    return ast.unparse(tree)  # Восстановление кода без комментариев

# Пример для Python-файла (не для PHP)
JavaScript (сторонние инструменты)

В экосистеме JavaScript минификаторы (например, UglifyJS, Terser) выполняют схожую задачу для production-сборки.

// Использование через CLI, а не нативную функцию
// terser input.js --output output.min.js --compress --mangle

Отличие от PHP в том, что php_strip_whitespace – встроенная функция для разового применения, а в других языках это часть инструментов сборки.

Типичные ошибки
Ошибка пути к файлу

Функция не генерирует исключение, а возвращает пустую строку, что можно пропустить.

<?php
// Файла нет
$code = php_strip_whitespace('/fake/path/script.php');
if ($code === '') {
    echo 'Файл не найден или он пуст.';
}
?>
Обработка не-PHP содержимого

Функция предназначена только для PHP-кода. Для других типов файлов поведение некорректно.

<?php
// Файл test.txt с текстом 'Hello // World'
$result = php_strip_whitespace('test.txt');
echo $result; // Выведет 'Hello // World', комментарий не удалится
?>
Изменения в последних версиях PHP

В поведении функции php_strip_whitespace с версии PHP 5 до PHP 8 существенных изменений не было. Она остается стабильной и редко изменяемой. В PHP 8.0+ функция корректно работает с новыми синтаксическими конструкциями, такими как атрибуты, но сам принцип удаления пробелов и комментариев не менялся.

Расширенные примеры
Сравнение размера кода до и после
Пример php
<?php
$file = 'example.php';
$originalSize = filesize($file);
$strippedCode = php_strip_whitespace($file);
$strippedSize = strlen($strippedCode);

echo "Исходный размер: $originalSize байт\n";
echo "Размер после обработки: $strippedSize байт\n";
echo "Сжатие: " . round((1 - $strippedSize/$originalSize)*100, 2) . "%\n";
?>
Обработка нескольких файлов в директории
Пример php
<?php
foreach (glob('src/*.php') as $phpFile) {
    $cleanCode = php_strip_whitespace($phpFile);
    $name = basename($phpFile, '.php');
    file_put_contents("clean/{$name}_clean.php", $cleanCode);
}
?>
Анализ без фактического выполнения

Функция полезна для статического анализа, например, подсчета операторов.

Пример php
<?php
$code = php_strip_whitespace('app.php');
// Подсчет точек с запятой как грубая оценка количества операторов
$statements = substr_count($code, ';');
echo "Примерное количество операторов: $statements";
?>

PHP php_strip_whitespace function comments

En
Php strip whitespace Return source with stripped comments and whitespace