Как предотвратить эхо в PHP и поймать, что внутри?
У меня есть функция (DoDb::printJsonDG($sql, $db, 1000, 2)
), которая echos json. Я должен поймать его, а затем использовать str_replace(), прежде чем он отправит пользователю. Однако я не могу остановить его от эха. Я не хочу изменять printJsonDG, потому что он используется в нескольких других местах.
Ответы
Ответ 1
Вы можете использовать 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"
Ответ 2
Вы можете сделать это, используя функции буферизации вывода.
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;
Ответ 3
Возможно, вы можете реорганизовать 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 );
}
}
Таким образом, вам не нужно прикасаться к коду в другом месте вашего приложения.
Ответ 4
Отметьте выходную буферизацию, но я бы скорее изменил функцию сейчас, поскольку, похоже, она будет использоваться для двух вещей. Простое возвращение строки было бы лучше.