В PHP 7.4 официально не поддерживаются короткие открытые теги, а в PHP 8 их полностью удаляются, поэтому этот вопрос о SO станет довольно популярным, поскольку люди ищут решения для преобразования устаревших кодовых баз.
Как уже отмечалось в других ответах, sed не охватывает все варианты использования. Предлагаемый full_opening_tag PHP-CS-Fixer очень похож на sed по своему поведению и также не охватывает все варианты использования. Кроме того, по крайней мере один инструмент, который я нашел, например, один ответ danorton, в настоящее время работает только при включении коротких открытых тегов, что, если вы обновились до PHP 8 через обновление ОС, вы не сможете легко откатиться до 7.x, чтобы запустить такие инструменты. Предупреждение Emptor применимо ко всем этим подходам.
Я написал инструмент, который не зависит от существования коротких открытых тегов (т.е. работает с PHP 8), не использует регулярные выражения (т.е. использует token_get_all()), а также избегает некоротких открытых тегов (например, <?xml) и другие сценарии без тегов (например, строки PHP, содержащие «теги»).
https://github.com/cubiclesoft/php-short-open-tag-finder/
Режим по умолчанию, в котором работает инструмент, просто находит ссылки и отображает их. Файлы не изменяются.
В режиме -ask, который в настоящее время является единственным режимом изменения файлов, инструмент спрашивает, можно ли заменять каждый набор ссылок для каждого файла. То есть, если есть 500 файлов с 2000 короткими ссылками на открытые теги, он будет запрашивать только 500 раз.
Даже с группировкой на уровне файлов инструмент, возможно, слишком осторожен в своем подходе к внесению изменений. Но мы говорим о возможном изменении тысяч файлов в системе за один день. Я не думаю, что полная автоматизация - правильный ответ. Мне потребовалось всего несколько часов, чтобы тщательно изучить каждое изменение, охватывающее несколько тысяч файлов во всех системах, которыми я управляю с помощью этого инструмента.
У меня довольно большой опыт использования token_get_all(), а также написания парсеров токенов.
person
CubicleSoft
schedule
26.04.2019