如何使特殊字符与mailto:link(PHP)兼容?

时间:2013-03-15 16:18:13

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

我正在尝试将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参数也没有效果。跆拳道?

5 个答案:

答案 0 :(得分:2)

  

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

我打赌你只是思考,因为你将脚本输出视为HTML ...以及&amp; lt;在HTML中显示?是的,<字符......

答案 1 :(得分:1)

你看错了!您看到HTML标记 IS 的原因是因为神奇的PHP功能正在运行。否则,它只会呈现为实际的HTML。发生这种情况是因为您可能打印到HTML页面。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

它确实有效。如果您查看源,您将看到它正常工作。 HTML正在呈现特殊字符

答案 4 :(得分:0)

如果您查看页面代码,您会看到生成的内容与预期完全相同。噜:

     <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实体将再次转换为文本。如果它不是您想要的,则应将输出放在<pre>标记内。