我的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实体放在数据库中,同时仍能让链接正常工作?
发布于 2015-05-02 00:49:52
对于URL,您不希望使用htmlentities(),因为它用于显示超文本标记语言。
相反,您将希望使用urlencode()
$link = '/page.php?location=' . urlencode($location);如果您的数据已经是超文本标记语言编码的,那么在通过urlencode()传递数据之前,您需要对其进行解码。一个很好的函数是html_entity_decode()
$location = html_entity_decode($row['location']);
$link = '/page.php?location=' . urlencode($location);发布于 2015-05-02 00:48:50
您可能更好地使用filter_var($var, FILTER_SANITIZE_URL)
发布于 2015-05-02 00:49:32
虽然不是最好的方法,但既然您使用的是htmlentities(),那么您可以使用html_entity_decode()
来自:http://php.net/html_entity_decode
htmlentities()与
html_entity_decode()相反,它将字符串中的所有htmlentities转换为相应的字符。
https://stackoverflow.com/questions/29991187
复制相似问题