Пакетный скрипт для замены коротких открытых тегов PHP на <? Php - PullRequest
17 голосов
/ 26 марта 2009

У меня есть большая коллекция php-файлов, написанных за эти годы, и мне нужно правильно заменить все короткие открытые теги на соответствующие явные открытые теги.

change "<?" into "<?php"

Я думаю, что это регулярное выражение правильно выберет их:

<\?(\s|\n|\t|[^a-zA-Z])

, который заботится о таких случаях, как

<?//
<?/*

но я не уверен, как обработать все дерево папок и определить расширение .php, применить регулярное выражение и сохранить файл после его изменения.

У меня такое чувство, что это может быть довольно просто, если вы освоите правильные инструменты. (В руководстве по sed есть интересный взлом: 4.3 Пример / Переименование файлов в нижний регистр ).

Может быть, я ошибаюсь.
Или, может быть, это может быть oneliner?

Ответы [ 13 ]

0 голосов
/ 27 ноября 2013

К сожалению, автоматизированные решения могут не работать. Моя рекомендация:

1) Используйте grep, чтобы найти все короткие теги:

grep -rn "<?[^p]" *

2) Просмотрите каждый файл и строку и исправьте вручную

Я понимаю, что это может быть нереальным решением, если у вас огромный проект, но для меня это сработало хорошо.

0 голосов
/ 26 марта 2009

Для страниц XML / XHTML характерно включение следующего кода:

<?php echo '<?xml version="1.0" encoding="UTF-8" ?>'; ?>

Конечно, это не должно быть изменено ни на:

<?phpphp echo '<?phpxml version="1.0" encoding="UTF-8" ?>'; ?>

ни:

<?php echo '<?phpxml version="1.0" encoding="UTF-8" ?>'; ?>
0 голосов
/ 26 марта 2009

Я должен был пройти через это раньше, и я нашел, что лучше всего делать это поэтапно. Плохой скрипт, пытающийся все это перехватить, может испортить кучу файлов.

Я использовал Coda (или любой другой веб-редактор) для простого поиска и замены очень специфических строк.

Например, начиная с "

Это может показаться немного более утомительным, но я был уверен, что что-то не запуталось где-то, о чем я не знал. Возвращение - это настоящая боль.

...