我正在尝试将html放入mailto链接(<a href='mailto:...
)并使用htmlescapechars(),但这似乎不是我需要的。
<a href='mailto:?subject=<?echo $subject_e=htmlspecialchars($subject, ENT_QUOTES)?>&body=<?=$subject_e?>%20via%20https://mySite.com/<?=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; // <a href='test'>Test</a>
在我自己的服务器或http://writecodeonline.com/php/上运行此功能似乎不会转换特殊字符。
所以它似乎不是PHP版本问题。包括encoding
参数也没有效果。跆拳道?
答案 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"><a href='test'>Test</a></div>
</div>
问题在于,当您渲染页面时,html实体将再次转换为文本。如果它不是您想要的,则应将输出放在<pre>
标记内。