【问题标题】:How to make special characters compatible with a mailto: link (PHP)?如何使特殊字符与 mailto: 链接(PHP)兼容?
【发布时间】:2013-03-15 16:18:13
【问题描述】:

我正在尝试将 html 放入 mailto 链接 (<a href='mailto:...) 并使用 htmlescapechars() 但这似乎不是我需要的。

<a href='mailto:?subject=<?echo $subject_e=htmlspecialchars($subject, ENT_QUOTES)?>&body=<?=$subject_e?>%20via%20https&#58;&#47;&#47;mySite.com&#47;<?=htmlspecialchars($subjectLink, ENT_QUOTES)?>%20'>some text</a>

谁能解释Example #1 in the htmlspecialchars() part of PHP's documentation在什么条件下有效?

$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;

在我自己的服务器或http://writecodeonline.com/php/ 上运行此功能似乎不会转换特殊字符。

所以这似乎不是 PHP 版本问题。包括encoding 参数也没有效果。什么?

【问题讨论】:

    标签: php escaping special-characters html-escape-characters


    【解决方案1】:

    在我自己的服务器上运行此功能 [...] 似乎不会转换特殊字符。

    我敢打赌,您只是 在想,因为您将脚本输出视为 HTML……而 <显示为 HTML?对,一个&lt; 字符……

    【讨论】:

      【解决方案2】:

      你看错了!您看到 HTML 标签 IS 的原因是神奇的 php 函数正在工作。否则,它只会呈现为实际的 HTML。发生这种情况是因为您可能正在打印到 HTML 页面。

      【讨论】:

        【解决方案3】:

        所以在查看elsewhere on SO 之后,我意识到我只需要rawurlencode() 而不是htmlspecialchars()

        【讨论】:

          【解决方案4】:

          它实际上正在工作。如果您查看源代码,您会发现它工作正常。虽然 HTML 正在呈现特殊字符

          【讨论】:

            【解决方案5】:

            如果您查看网页的代码,您会发现生成的内容正是预期的内容。厕所:

                 <div class="page-body">
                    <div id="code-output" class="code-output">&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;</div>
                 </div>
            

            问题是当你渲染页面时,html实体又被转换成文本了。如果不是你想要的,你应该把输出放在&lt;pre&gt; 标签内。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多