2013-03-15 88 views
1

我试图把HTML到mailto链接(<a href='mailto:...)和使用htmlescapechars(),但这似乎并不是我所需要的。如何制作与mailto:link(PHP)兼容的特殊字符?

<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参数也没有效果。跆拳道?

回答

1

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

2

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

我敢打赌,你只是想因为你查看脚本输出HTML ...,什么& LT;显示为HTML?对,<字符...

+0

哦,是啊,呃!让我看看... – 2013-03-15 16:20:34

+1

经典... :) – Adrenaxus 2013-03-15 16:21:07

0

它实际上是工作。如果您查看源代码,则会看到它正常运行。 HTML正在渲染特殊字符

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>标签内。

1

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