【问题标题】:Rawurlencode show's ascii codes in emailto body and subjectRawurlencode 显示电子邮件中的 ascii 代码到正文和主题
【发布时间】:2013-12-22 15:30:57
【问题描述】:

制作了这个按钮,它将通过访问者电子邮件客户端在 Wordpress 中分享帖子的摘录和标题:

<a href="mailto:?subject=<?php echo rawurlencode()(get_the_title('','', false)) ?>&amp;body=<?php echo rawurlencode()(get_the_excerpt()) ?><?php the_permalink() ?>" title="Send a link to this post via email" rel="nofollow" target="_blank">Share this post via email</a>

99% 的情况下都可以正常工作。唯一的问题是它显示了来自帖子正文和标题的 ascii 代码。 例如,我在电子邮件正文中看到“&amp;hellip;”而不是 [...]

我该如何解决这个小问题?

【问题讨论】:

    标签: php wordpress email


    【解决方案1】:

    基本上,您可能需要解码 get_the_titleget_the_excerpt 通过类似调用返回的 html 实体

    html_entity_decode(get_the_title())
    

    因此,在您的情况下,您必须将您对 rawurlencode 的调用封装在 html_entity_decode 周围:

    <a href="mailto:?subject=<?php echo rawurlencode(html_entity_decode(get_the_title('','',   false)))?> ...
    

    但请注意,根据您对html_entites_decode 的使用情况,如果您的摘录包含引号或双引号,您的标记可能会被弄乱并且不起作用,因此您需要过滤这些。阅读文档了解更多信息:

    http://www.php.net/html_entity_decode

    (编辑:您可以将 ENT_NOQUOTES 参数传递给 html_entity_decode 以从转换中排除引号;但如果您的标题或摘录包含引号,则它们仍将在您的电子邮件中显示编码。)

    此外,如果您的标题或摘录包含用户生成的内容,您可能会在反转编码实体时打开一个安全漏洞(例如,用于 XSS 注入)。所以我建议寻找另一种发送电子邮件的方式(例如某种推荐插件)。

    【讨论】:

    • 如果我插入 html_entities_decode(get_the_title()) ,我会得到一个致命错误:调用未定义函数 html_entities_decode
    • 对不起,我拼错了。请改用html_entity_decode()。但是您绝对应该阅读文档。
    • 保持与 rawurlencode() 相同 我已经阅读了文档,但我是 php 新手,所以我很难理解该怎么做。
    • 我认为这与这里的问题几乎相同:stackoverflow.com/questions/3483422/… 也许这会有所帮助。再次感谢您
    • 你是对的,我错过了纠正你的 rawurlencode 调用。仅供参考:它应该像这样将 rawurlencode 包装在 html_entity_decode 周围:&lt;a href="mailto:?subject=&lt;?php echo rawurlencode(html_entity_decode(get_the_title('','', false)))?&gt; ...
    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多