Apostrophes被发送为\ {39;

时间:2015-08-05 09:11:12

标签: php html

function send_mails($adress, $subject, $message, &$tpl)
{

    // fix for correct display of newlines and spaces in the message
    $textmail = ereg_replace( "\n", "\r\n", $message);
    $textmail = wordwrap($textmail, 70, "\r\n");

    //prepare text to show online (html)
    $textshow = ereg_replace( "\r\n", "<br>", $textmail);

    $sent = '-- HTML Code to show the Mail you sent --';

    $tpl->assign(BODY, $sent);

    $mailtext = utf8_decode($textmail);

    $headers = '-- Functional Header --'; 

    mail ($adress, $subject, $mailtext, $headers);
}

我现在的问题是,如果邮件包含撇号,他们就会显示如下:

  

我们太好了,所以你不应该判断这个示例文本的内容

我已尝试$textmail = ereg_replace(" \' ", " ' ", $textmail);,但这似乎无效。

我非常确定有一个简单的解决办法,但我现在已经找了一段时间并且找不到解决办法......可能是在寻找错误的东西。

1 个答案:

答案 0 :(得分:2)

string stripslashes ( string $str )正是您要找的!

$str = "We\'re too good, so you shouldn't judge this example text\'s content";

$newStr = stripslashes ( $str );

echo $newStr;

输出:

We're too good, so you shouldn't judge this example text's content

修改

VolkerK的评论:

  

我认为首先确定可能有用   这是否会对抗原因或只是一种症状...

请考虑一下,这是一种Hot-Fix,你应该试着找出,实际发生的方式和地点?

开头的$message是否包含这些斜杠? (只是echo。)

  • 如果是,$message来自哪里?

  • 如果没有,请一直浏览$message - &gt; $textmail - &gt; $textshow ...并找出,在那一步做到并消除它!