2011-08-17 10 views
14

मेरे पास एक फ़ंक्शन है (DoDb::printJsonDG($sql, $db, 1000, 2)) जो echos json। मुझे इसे पकड़ना है और फिर उपयोगकर्ता को भेजने से पहले 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 refactor कर सकते हैं:

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); 
    } 
} 

इस तरह आप आप आवेदन में कहीं और कोड को छूने के लिए नहीं है।

संबंधित मुद्दे