1

我知道如何使用 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>
4

1 回答 1

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>';

让它发挥作用。

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

于 2012-12-30T12:32:28.573 回答