function &capture_call($func_name, $exp_length, $args = array(), $debug = FALSE, $check_for_warning = TRUE) { if ($debug) { capture_stop(); capture_reset_text(); } else { capture_reset_and_start(); } $rval = call_user_func_array($func_name, &$args); $this->set_text(capture_stop_and_get()); capture_reset_text(); $this->_testFor_string_length($exp_length); // this is a paranoia check: make sure that no PHP warnings were // generated, if so, then print a warning and the entire text if ($check_for_warning && (preg_match('/[<]b[>]Warning[<]\\/b[>]:/', $this->get_text()) || preg_match('/[<]b[>]Fatal error[<]\\/b[>]:/', $this->test_text))) { print "<b>CaptureCall: Warning: captured text contained a " . "warning message?</b>\n"; $this->print_text_as_html(); } return $rval; }
function &capture_stop_and_get() { capture_stop(); return join('', $GLOBALS['g_cap_text']); }