Ir para conteúdo

POWERED BY:

Arquivado

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

cassiano óliver

Passar valor de variável PHP para arquivo HTML

Recommended Posts

Olá pessoal,

 

Estou tentando enviar um e-mail a partir de um arquivo HTML, porém não consigo passar os dados das variáveis PHP para o arquivo HTML.

 

Restado o html

$nome = 'Casssiano'; // Quero passar este valor para o HTML
$body = file_get_contents('../emails/email-ativacao-senha.html');

 

No html, incluí algumas variáveis (não sei se é este o nome) para uso em templates.

Olá {nome}

 

Já pesquisei bastante, até encontrei classes, mas no momento quero realmente aprender como funciona.

Se alguém puder ajudar, desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o arquivo for HTML não tem como...

Você precisa de um arquivo com extensão .php ou .phtml.

 

Aí, ao invés de usar file_get_contents, simplesmente dê um include...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode listar as variáveis, já com seus respectivos valores, num array associativo. Depois substituir com alguma função.

 

<?php
$dados = array(
'nome'	=> 'Cassiano',
'site'	=> 'http://google.com/',
);
//$corpo = file_get_contents('../emails/email-ativacao-senha.html');
$corpo = 'Oi {nome}, você ja visitou o {site} hoje?';
$chaves = array_map( function( $var ) { return '{'.$var.'}'; } , array_keys( $dados ) );
$corpo = str_replace( $chaves , array_values( $dados ) , $corpo );

echo $corpo;

//retorno: Oi Cassiano, você ja visitou o http://google.com/ hoje?

 

Ou pode usar as famosas expressões regulares para fazer algo mais automatizado:

 

<?php
$GLOBALS['nome'] = 'Cassiano';
$GLOBALS['site'] = 'http://google.com/';
//$corpo = file_get_contents('../emails/email-ativacao-senha.html');
function varChanger ( $var ) {
return $GLOBALS[ trim( $var , '{}' ) ];
}
$corpo = 'Oi {nome}, você ja visitou o {site} hoje?';
$corpo = preg_replace( '/(\{[a-zA-Z_]+\})/e' , 'varChanger(\'\\1\')' , $corpo );

echo $corpo;

 

Entre as duas opções, a primeira é bem melhor, porém a implementação de ambas está bastante simples. A segunda opção pode oferecer resultados diferentes com poucas mudanças no código.

Com classes isso iria ficar supimpa :thumbsup:

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.