Goal: Запустить его на Node.js и он посреди любого *.php‑файла заменит
print('<div class="text-center mb‑12">'."\r\n");
print(' <div class="HeadText text‑4xl md:text‑5xl lg:text‑6xl font‑bold text‑gray‑900 mb‑6">'."\r\n");на эквивалент в Heredoc‑синтаксисе:
echo <<<EOT
<div class="text-center mb-12">\r\n
<div class="HeadText text-4xl md:text-5xl lg:text-6xl font-bold text-gray-900 mb-6">\r\n
EOT;То есть каждый вызов print() (с одной строкой‑литералом) превращается в echo <<<....
⚠️ Что НЕ делаем:
- Переводим строкы, которые находятся в рамках сложного выражения (
print("a".'b');и т.п.).- Меняем выражения, содержащие переменные, конкатенацию или другие символы, отличные от простых строк в одинарных/двойных кавычках.
Для простых `print('...');
## Как это работает
* Скрипт принимает список файлов через аргументы командной строки (или обрабатывает все *.php в текущей папке, если аргументы не заданы).
* Для каждого файла читает содержимое, ищет шаблоны `print('...');` или `print("...");` и заменяет их нужным Heredoc‑синтаксисом.
* Записывает изменён обратно в тот же файл.
### Как запустить
1. **Создайте файл** `convert-php-print-to-heredoc.js` и вставьте туда код выше.
2. Сделайте его исполняемым:
```bash
chmod +x convert-php-print-to-heredoc.js
-
Запустите:
# Первая опция: явно список файлов node convert-php-print-to-heredoc.js path/to/file1.php path/to/file2.php # Вторая опция: без аргументов – обрабатываются все *.php из текущего каталога node convert-php-print-to-heredoc.js
Original:
print('<div class="text-center mb-12">'."\r\n");
print(' <div class="HeadText text-4xl md:text-5xl lg:text-6xl font-bold text-gray-900 mb-6">'."\r\n");After:
echo <<<EOT
<div class="text-center mb-12">\r\n
<div class="HeadText text-4xl md:text-5xl lg:text-6xl font-bold text-gray-900 mb-6">\r\n
EOT;Почему это полезно?
- Красивый и удобный для чтения вывод «HEREDOC» / «EOF» в PHP.
- Можно легко вставлять многострочный HTML, не париться со смешиванием кавычек и символов переноса строки.
- Код становится лаконичнее, а комментирование проще (просто закомментируйте всю heredoc‑строку).
- Поддержка переменных – объединить несколько
print()в одну heredoc‑строку или выяснить, что строка содержит переменные ($var). - Вариативный delimiter – в случае, если строка уже содержит
EOT, выбрать другой тег (DELIM). - Толстый поиск – использовать парсер PHP (например,
php-parser), но это уже отдельный проект.