Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

georgewar

preg_replace_callback e ob_start (bug?)

Recommended Posts

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.