1

我正在尝试将 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>

谁能解释PHP 文档的 htmlspecialchars() 部分中的示例 #1 在什么条件下有效?

$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参数也没有效果。什么?

4

5 回答 5

2

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

我敢打赌,您只是在,因为您将脚本输出视为 HTML……而 < 是什么?显示为 HTML?对了,一个<角色……</p>

于 2013-03-15T16:19:56.327 回答
1

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

于 2013-03-15T16:26:40.150 回答
1

所以在寻找其他地方之后,我意识到htmlspecialchars()我只是需要rawurlencode()

于 2013-03-15T16:35:56.080 回答
0

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

于 2013-03-15T16:20:51.507 回答
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>标签内。

于 2013-03-15T16:23:04.037 回答