Расширение 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' случайно является частью некоторых других имен функций или переменных и т. Д.

Другие вопросы по тегам