0

第一个str_replace工作正常,但以下两个不处理。我测试了替换变量和替换字符串都存在/回显。每个人都需要一个唯一$body.的吗?

        $body.= "--$mime_boundary\n";
        $body.= "Content-Type: text/html; charset=\"UTF-8\"\n";
        $body.= "Content-Transfer-Encoding: 7bit\n\n";    
        $body.= str_replace("%%user%%",$en['user'],$html_content);
        $body.= str_replace("%%confcode%%",$en['confcode'],$html_content);
        $body.= str_replace("%%memb_id%%",$en['memb_id'],$html_content);    
        $body.= "\n\n";
        $body.= "--$mime_boundary--\n";
4

3 回答 3

3

尝试

    $body.= str_replace(
        array(
            "%%user%%",
            "%%confcode%%",
            "%%memb_id%%"
        ), 
        array(
            $en['user'],
            $en['confcode'],
            $en['memb_id']
        ),
        $html_content
    );

代替

    $body.= str_replace("%%user%%",$en['user'],$html_content);
    $body.= str_replace("%%confcode%%",$en['confcode'],$html_content);
    $body.= str_replace("%%memb_id%%",$en['memb_id'],$html_content); 
于 2013-09-12T19:04:09.527 回答
1

http://php.net/manual/en/function.str-replace.php

试试这个。我认为如果您要从预先未替换的值进行替换,您可能会遇到一些问题。

$body.= "--$mime_boundary\n";
$body.= "Content-Type: text/html; charset=\"UTF-8\"\n";
$body.= "Content-Transfer-Encoding: 7bit\n\n";    
$body.= str_replace(array("%%user%%","%%confcode%%","%%memb_id%%"),array($en['user'],$en['confcode'],$en['memb_id']),$html_content);
$body.= "\n\n";
$body.= "--$mime_boundary--\n";
于 2013-09-12T19:07:40.067 回答
0

我猜,你想替换同一个字符串中的所有字符串$html_content吗?

因此,您应该调用replace已处理的字符串以使它们全部正常工作:

    $body.= "--$mime_boundary\n";
    $body.= "Content-Type: text/html; charset=\"UTF-8\"\n";
    $body.= "Content-Transfer-Encoding: 7bit\n\n";    
    $html_content= str_replace("%%user%%",$en['user'],$html_content);
    $html_content= str_replace("%%confcode%%",$en['confcode'],$html_content);
    $body.= str_replace("%%memb_id%%",$en['memb_id'],$html_content);    
    $body.= "\n\n";
    $body.= "--$mime_boundary--\n";

请注意,这将改变您的$html_content. 如果不需要,请使用另一个变量来分配结果,或 Mark Ba​​ker 的解决方案。

于 2013-09-12T19:04:44.563 回答