Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Fersan

Problema com Aspas SIMPLES e DUPLAS

Recommended Posts

Fala pessuár, jóinha?

 

Seguinte, estou com um problema que está me encucando, eu preciso enviar um e-mail formatado e bonitinho. Porém, o conteúdo dele vem do banco de dados, logo que o administrador do sistema poderá alterar a mensagem que será entregue...

 

Ai começa a graça, para que ele envia as variáveis, é necessário que no corpo do e-mail esteja entre ASPAS DUPLAS, assim:

$msg = " 
<html>
<head></head>
<body>
$corpo_email
</body>
</html>
";

---

CÓDIGO QUE ESTÁ NO BANCO DE DADOS

<p>Olá <span style='font-size: medium;'> </span></p>
<p>seu amigo<strong> $nome_remetente</strong> visitou a página de classificados da TC BRAZIL e encontrou algo que pode<br />ser interessante para você.</p>
<p><span style='color: #ff6600;'><strong>$titulo_classificado<br />$anuncio<br /><img src='$thumb' alt='' /></strong></span></p>
<p>Interessante para você?<br />Abaixo meios de contato direto com o anunciante.<br /><span style='color: #ff6600;'><br /><strong>$nome_anunciante<br />Email:$email_anunciante<br />telefone: $telefone_anunciante</strong></span></p>
<p>Att,<br /><strong>Tc Brazil</strong>.<br />www.tcbrazil.com</p>
<p> </p>
<p>Visite nossa página de classificados, é gratuito: www.tcbrazil.com/classificados</p>

 

 

 

 

Só que o código formatado, em um Wysing vai pro banco de dados com aspas duplas, então isso gera um conflito, correto?

Maravilha, mas ai é fácil, eu dou um str_replace e substituo as aspas duplas por aspas simples...

ótimo, inseri o código no banco de dados todo com aspas simples...

 

Agora só enviar o e-mail, e advinha?

 

Embora no banco de dados esteja com aspas simples, no e-mail chega com aspas duplas então as variáveis que deveriam está ali, são entendidas como string, e não mostra o valor e sim a váriavel...

Resumo: A aspas simples que está no banco de dados, sofre uma mutação e chega no e-mail como aspas duplas, isso sem nenhum str_replace...

 

Alguém dá uma luz? :rolleyes:

 

 

abraço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Henry, nem resolve, continua na mesma, o e-mail chega com as váriaveis...

 

EDIT:

 

IMPRESSIONANTE, eu joguei a variavel $CORPO fora do "MAIL"... e apareceu corretamente, com ASPAS SIMPLES, é como se recebesse as DUPLAS quando envia o e-mail...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato Will, dentro do bloco...

O problema pelo que eu entendi aqui é o seguinte...

 

 

$msg = " "; // tem essas aspas duplas, se eu jogar aspas duplas ali... ex:

 

$msg = " " "; // vai bagunçar o código todo, corrreto? então eu tenho que pegar as aspas duplas do $CORPO_EMAIL e converte-las para aspas simples, eu fiz isso... e beleza, o problema é que quando envia o e-mail, as aspas simples voltam a ser duplas...

 

Acho que isso que está gerando o conflito..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Carlos, tudo bom fera?

 

Então, deu na mesma.. Chega o e-mail com as váriaveis, e as aspas continuam indo como duplas...

 

"seu amigo $nome_remetente visitou a página de c... " // Isso é um exemplo de como chegam os e-mails.

 

 

Ô troço complicado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

INFO.PHP

$sql_email = mysql_query ("select * from paginas");  
$row_email = mysql_fetch_array ($sql_email);

$email_amigo = $row_email["email_amigo"]; // DOU A VARIAVEL EMAIl_AMIGO, O CONTEÚDO DO BD
$email_anunciante = $row_email['email_anunciante'];
$email_confirmacao = $row_email['email_confirmacao'];

 

 

PAGINA DE ENVIO

<?
if ($_POST) {
include "info.php";  //Arquivo de onde vem o corpo e-mail

$titulo = $row_classificado['titulo'];
$anuncio = $row_classificado['anuncio'];
$nome_anunciante = $row_usuario['nome'];
$telefone_anunciante = $row_usuario['telefone'];
$email_anunciante = $row_usuario['email'];


if ($row_classificado['thumb']==""){
$thum = "[Sem Image]";} else {
$thumb = $row_classificado['thumb'];
}

$nome_remetente = $_POST['nome_remetente'];
$nome_destino = $_POST['nome_destino'];
$email_destino = $_POST['email_destino'];
$titulo = "$nome_remetente quer te mostrar uma coisa...";


$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=ISO-8859-1 \r\n";
$headers .= "To: classificados@tcbrazil.com\r\n";
$headers .= "From: $nome_destino <$email_destino>\r\n";

$msg = "
	<html>
	<head></head>
	<body>$email_amigo
	</body>
	</html>
	";
	
mail($email_destino,$titulo,$msg,$headers);
echo "<script>alert('Mensagem enviada com sucesso');</script>";
}
?>

 

 

 

Aí estão as duas páginas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$titulo = $row_classificado['titulo'];

Todos os Lugares onde são utilizadas aspas simples o PHP tenta achar alguma constante (variáveis definidas através de 'define');

 

Troque todos os retornos de banco de dados. Para aspas duplas.

$titulo = $row_classificado["titulo"];

 

Para saber mais, Leia:

http://br.php.net/manual/pt_BR/language.types.string.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use concatenações, pois o seu servidor de testes pode estar configurado de forma que :

echo "oi $nome_usuario!!";
Funcione, alguns lugares que você utilizar, pode ocorrer de não funcionar, e se você utilizar aspas simples para delimitar esta string, a variável não será convertida.

 

O correto seria:

echo "oi ".$nome_usuario."!!";
Troque esta linha também.

De

mail($email_destino,$titulo,$msg,$headers);
echo "<script>alert('Mensagem enviada com sucesso');</script>";
Para:

if(mail($email_destino,$titulo,$msg,$headers))
echo "<script>alert('Mensagem enviada com sucesso');
else
echo "<script>alert('Erro ao Enviar.');</script>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

ôpa Renato, tudo bom campeão?

Fiz algumas alterações dessas que você falou, só não é possível concatenar, pois as variavels $telefone_anunciante por ex. estão no banco de dados...

Mas o problema continua, sem nenhuma mudança.

 

 

Tentei concatenar, desconcatenar..rsrs.

Pensei que a váriavel que vem do banco de dados estava sendo interpretada como string, então dei um STr_REPLACE não sofreu mudança alguma...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta... nem precisava ter pedido... Eu nao vo no comeco do seu post que ja tinha o que eu queria...

 

Acho que nao vai ter como você fazer isso...

 

Porque você tem uma variavel dentro do conteudo de outra variavel... Porque a variavel vai ser enviada para o email... E o e-mail nao vai interpretar...

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos Eduardo, isso é tudo o que eu não queria ouvir.. hehehehehe...

 

 

Alguém ai me diz que ele não tem razão.. rsrsrs!

 

 

Abraços...rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele não tem razão;

 

Utilize EVAL do php;

 

 

echo eval($string);

 

Desculpa eu não ter pensado nisto, é que eu não tinha lido o tópico inteiro... rsrs

 

eu fui subindo um pouco os caras estavam falando só de String, aspas etc..

aposKAKOs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Henry tudo bem?

0 array row_classificado vem de um select que tem mais a cima, não consta no código que enviei realmente...

 

 

 

Da-le RENATO, rapaz eu acho que essa função pode me salvar, mas tem um porém, eu não tenho conhecimento dela, nunca usei, nem sei como usar, fiz uma pesquisa na net, não entendi muito bem no manual e nem achei nada que me fizesse entender, pode postar um exemplo que se encaixe no que eu tenho que fazer????

 

 

Fico muito agradecido.

 

edit

 

Eu tenho que dar EVAL(); na variavel do que envia o corpo do e-mail ou nas váriaveis que estão indo para o banco de dados, lá na edição do e-mail?

Mas como? str_replace("$nome","<?=eval($nome)?>",$corpo_email); para enviar isso <?=eval($nome)?> para o banco de dados e não somente a variavel $nome ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os Lugares onde são utilizadas aspas simples o PHP tenta achar alguma constante (variáveis definidas através de 'define');

a afirmação não é correta..

 

 

 

quanto ao problema do autor do topico, basta saber concatenar variáveis.

se não está conseguindo fazer isso é bem provável que esteja fazendo errado.

 

 

exemplo 1:

<?php

$foo = 'bar';

$str = "
	123
	<br>
	456" . $foo . "
	<br>
	789
	";

echo $str;

?>

 

 

 

consulte também:

 

Heredoc Sintax

http://us2.php.net/manual/en/language.type....syntax.heredoc

 

 

Single quotes:

http://us2.php.net/manual/en/language.type...g.syntax.single

Compartilhar este post


Link para o post
Compartilhar em outros sites

Administrador falou, tá falado...

Mesmo que eu não tenha entendido nada...rsrsrs

 

Mas então camarada, o que acontece é o seguinte.. as váriaveis $nome por exemplo, estão armazenadas no banco de dados e elas formam o CORPO DO E-MAIL, e quando vai enviar o e-mail, são interpretadas como string, e no lugar dos valores, chegam as váriaveis ex:

 

Olá $nome_destinatario

seu $amigo $nome_remetende lhe enviou uma mensagem.

 

Como foi dito mais acima para concatenar e etc, eu tentei concatenar.. Mas não dá certo, o resultado é EXATAMENTE O MESMO de se não estivesse concatenado. chegam as váriaveis, e não os valores...

 

E outra coisa, eu tento dar STR_REPLACE para trocar a string $nome pela variavel, e não dá em nada, o replace não funciona...

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.