Existem funções no PHP que ao invés de usar o ‘return’ já imprimem os valores diretamente o que é um problema se você quer verificar o valor antes de exibi-lo, isso aconteceu comigo e ao usar um Plugin do WordPress que não retornava o valor e sim já exibia, e daí procurando na web como sempre achei uma solução ultra simples e fácil de entender.
A idéia é simples, basta você pegar o valor sendo exibido usando o ‘ob_start()’, abaixo veja a função que peguei do Nate’s Blog, mas claro que trazudi para uso no futuro:
/**
- Funcao que pega valores que sao impressos diretamente,
- para funcoes que nao usam return, usam ‘echo’, ‘print’, …
- @param $callback eh o nome do funcao
- @return o valor de saida da funcao
- @example
- // trabalha na versao mais nova do PHP 5
- $sidebar = capture(function(){ get_sidebar(); });
- @example2
- // se precisar pode passar argumentos para essa funcao
- $title = ‘Test’;
- $author = ‘Nate Nuzum’;
- $header = capture(‘get_header’, $title, $author);
*/
function capture($callback){
$args = func_get_args();
array_shift($args);
ob_start();
if (count($args))
call_user_func_array($callback, $args);
else
call_user_func($callback);
$output = ob_get_contents();
ob_end_clean();
return $output;
}
Depois vou instalar um plugin de Syntax Highlight, vlw
Fonte: http://www.natenewz.com/2010/06/09/force-php-function-to-return-instead-of-echo/