Intereting Posts
Плагины для коротких кодов для собственных пользовательских cms, таких как плагины для коротких сообщений WordPress Кэш-память Magento Core Config Один длинный класс или несколько более коротких классов? Когда im отправляет запрос Ajax в моем веб-приложении, тогда сторона контроллера дает мне скрипт в параметре запроса в laravel тестирование POST с использованием phpunit в laravel 4 Как перенаправить весь веб-трафик на определенную страницу? Неблокирующие функции PHP Получение имен всех файлов в каталоге с PHP Подсчитайте данные в массиве, где дата одинакова и постройте диаграмму bar morrisjs PHP DomDocument, повторное использование XSLTProcessor, стабильно / безопасно? Наличие «utm_» в строке URL разбивает переменную $ _GET в WordPress PHP DOMDocument для удаления HTML-тегов Что такое .inc и зачем его использовать? Попытка вызвать неопределенный метод с именем «getRequest» класса. Отправить по электронной почте в SwiftMailer Symfony Уникальные аргументы SendGrid для отдельных писем

Как предотвратить эхо в PHP и поймать, что внутри?

У меня есть функция ( DoDb::printJsonDG($sql, $db, 1000, 2) ), которая echos json. Я должен поймать его, а затем использовать str_replace (), прежде чем он отправит пользователю. Однако я не могу остановить его от эха. Я не хочу менять printJsonDG, потому что он используется в нескольких других местах.

Related of "Как предотвратить эхо в PHP и поймать, что внутри?"

Вы можете использовать функции ob_start() и ob_get_contents() в PHP.

 <?php ob_start(); echo "Hello "; $out1 = ob_get_contents(); echo "World"; $out2 = ob_get_contents(); ob_end_clean(); var_dump($out1, $out2); ?> 

Вывод:

 string(6) "Hello " string(11) "Hello World" 

Вы можете сделать это, используя функции буферизации вывода.

 ob_start(); /* do your echoing and what not */ $str = ob_get_contents(); /* perform what you need on $str with str_replace */ ob_end_clean(); /* echo it out after doing what you had to */ echo $str; 

Возможно, вы можете реорганизовать DoDb :

 class DoDb { public static function getJsonDG( $some, $parameters ) { /* original routine from printJsonDG without the print statement */ return $result; } public static function printJsonDG( $some, $parameters ) { print self::getJsonDG( $some, $parameters ); } } 

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

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