2011-08-17 6 views
14

私はjsonをエコーする関数(DoDb::printJsonDG($sql, $db, 1000, 2))を持っています。私はそれをキャッチして、str_replace()を使用してユーザーに送信する必要があります。しかし、私はエコーからそれを停止することはできません。他のいくつかの場所で使用されているため、printJsonDGを変更したくありません。PHPでエコーを防止し、それが何かをキャッチする方法は?

答えて

41

PHPでob_start()ob_get_contents()関数を使用できます。

<?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" 
1

output bufferingをチェックアウト、私はむしろ今では、それは二つのことのために使用されます思われることの機能を変更したいです。文字列を返すだけで最適です。

5

出力バッファリング機能を使用して実行できます。

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; 
4

おそらく、あなたは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); 
    } 
} 

あなたが他の場所で、あなたのアプリケーションのコードに触れることはありませんこの方法。

関連する問題