georgewar 1 Denunciar post Postado Outubro 7, 2017 Antes de mais nada é importante mencionar que o código abaixo está funcionando! Eu tenho um ob_flush aberto, que pega o conteúdo e manda para um callback. Dentro deste callback eu faço uma busca por expressões regulares por tags {$ [conteudo] } e substituo pelo texto na língua correta dentro de um segumento callback da função preg_replace_callback. A questão é o seguinte: veja que a tipagem do método substitui_texto é string, mas a função precisa retornar um array!!!!!! Diferente disso não funciona, e alguns erros também não são mostrados dentro deste último callback, mesmo com error = E_ALL!! Para sugestões e debate... //recebe os matchs da expressão regular do método flush_callback(), chama a função o mesmo número de vezes do match private function substitui_texto(array $matches): string { //precisa retornar um array (mas não aceita a tipagem da função?? problema PHP??) $a[0] = $this->arrLang[$matches[1]]; return $a[0]; } //antes de enviar o buffer para o navegador, o recebe para processamento private function flush_callback(string $buffer): string { //substitui as ocorrências de {$[conteudo]} pelo correspondente no array de tradução $pattern = '/\{\$(.*?)\}/'; $buffer = preg_replace_callback($pattern, "self::substitui_texto", $buffer); return $buffer; } Compartilhar este post Link para o post Compartilhar em outros sites