我的 MySQL 数据库有一些字段有时包含撇号,因此我注意对 html 实体进行编码。例如,“Cote d'Or”在数据库中存储为“Cote d&039;Or”。
当一个 MySQL 查询填充一个 href 时,我在我的源代码中得到了类似这样的东西。
<a href="/page.php?location=Cote d&039;Or">Text link</a>
但是,当我点击链接时,出现 403“禁止访问”错误。检查时,将鼠标悬停在链接上表示它正在阅读 &039;作为撇号。这似乎是页面错误的原因,因为在数据库中放置一个撇号会产生相同的错误,但其中没有任何内容可以正常工作。
我现在的问题是,我怎样才能在数据库中拥有 html 实体并仍然使链接正常工作?
最佳答案
对于 URL,您不想使用 htmlentities()
,因为它用于显示 HTML。
相反,您需要使用 urlencode()
:
$link = '/page.php?location=' . urlencode($location);
如果您的数据已经是 HTML 编码的,您需要在通过 urlencode()
传递它之前对其进行解码。一个很好的功能是 html_entity_decode()
:
$location = html_entity_decode($row['location']);
$link = '/page.php?location=' . urlencode($location);
关于php - <a href= 中的 HTML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29991187/