php - <a href= 中的 HTML 实体

标签 php mysql html-entities

我的 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/

相关文章:

php - 使用 php 和 android 手机的短信网关

mysql - 更换 table 的正确方法是什么?

php - MySQL 选择具有两个 where 条件且计数大于 1 且具有相同列 ID 的行

php - 在哪里检查 INSERT 语句的成功或失败?

html - 如何在一行中使用 perl 的 uri_encode

python - Beautiful Soup 将标准普尔变成标准普尔; AT&T 变成 AT&T; ?

php - 在 PHP 中解码没有分号的 HTML 实体

php - 使用下拉值查询 mySQL 数据库

javascript - 使用 PHP 的 Google 云消息传递 (GCM)

PHP mysql_fetch_array