在smarty mailto函数的输出中插入html

时间:2012-12-30 12:11:23

标签: html smarty

我知道如何使用smarty mailto函数来创建带编码的mailto锚链接。但我想知道是否有可能将html图像标签[<img>]插入此函数的输出中。 我试过了:

[SMARTY]
{$text = '<img src="/images/qr_code.jpg" alt="member sign up qr code">'}
{mailto address="test@example.com" encode="hex" text={$text}}

[HTML RESULT]
<a href="mailto:%74%65%73%74@%65%78%61%6d%70%6c%65.%63%6f%6d">
      &lt;img  src="/images/qr_code.jpg" 
               alt="member sign up qr code" &gt;
 </a>

我更喜欢这个输出:

 <a href="mailto:%74%65%73%74@%65%78%61%6d%70%6c%65.%63%6f%6d">
      <img src="/images/qr_code.jpg" 
           alt="member sign up qr code">
 </a>

1 个答案:

答案 0 :(得分:1)

从阅读此代码https://bitbucket.org/pferor/dbless/src/04b228943e39/dbless/lib/smarty/plugins/function.mailto.php看来,当您使用“十六进制”编码时,它不仅会对地址进行编码,还会对文本进行编码(第147行):

$text_encode = '';
for ($x=0; $x < strlen($text); $x++) {
    $text_encode .= '&#x' . bin2hex($text[$x]).';';
}

不确定这是不是问题。

如果您不介意编辑Smarty源,您可以更改此行(153):

return '<a href="'.$mailto.$address_encode.'" '.$extra.'>'.$text_encode.'</a>';

对此:

return '<a href="'.$mailto.$address_encode.'" '.$extra.'>'.$text.'</a>';

让它发挥作用。

如果您尝试“无”编码,它会显示图像吗?