Расширение PHP эхо?
Можно ли расширить PHP echo
чтобы я мог запустить дополнительный код обработки для каждой отображаемой строки? Мне нужен способ дезинфицировать все выходы и не хочу звонить strip_tags
на каждом дисплее вручную.
3 ответа
Вы не можете изменить поведение echo
но вы можете использовать функции буферизации вывода php (см. обратные вызовы). Тем не менее, это кажется излишним. Как и предполагал casablance: создайте функцию.
chustar,
написать свой собственный класс со статическими методами и поместить его в app / libs.
Edit0: вы программист, напишите код, который изменяет код.
@chutstar, если вы работаете в Linux, вы можете использовать sed, чтобы найти и заменить все 'echo' на 'strip_echo' в файлах.php в каталоге, рекурсивно.
Ниже показано, как Zend Framework заменил все 'require_once' на '//require_once', EXCEPT для 'require_once', который появляется в файле Loader/Autoloader.php или Application.pp
#!/ Bin / ш # CD путь / к /ZendFramework/ библиотека # заменить все 'require_once' на '// require_once' и пропустить Autoloader.php & Application.php находить. -name '*.php' -not -wholename '*/Loader/Autoloader.php' -not -wholename '*/Application.php' -print0 | xargs -0 sed --regexp-extended - in-place 's/(require_once)/\/\/ \1/g'
Так что ВАШ сценарий должен быть
#!/ Bin / ш # заменить все "эхо" на "стриптиз" # CD путь / к /ZendFramework/ библиотека находить. -name '*.php' -print0 | xargs -0 sed --regexp-extended - in-place 's/echo/strip_echo/g'
Я проверил, и это работает. Могут быть неожиданные замены, которые вы должны проверить, например, когда 'echo' случайно является частью некоторых других имен функций или переменных и т. Д.