PHP / MySQL - URL中的特殊字符。怎么避免?

时间:2010-04-03 17:55:04

标签: php mysql character

我的数据库包含从外部Feed中提取的信息。在此原始文本供稿中,使用以下文本代替特殊字符:

& - &
' - &39;
é - é

我提取了一些此文本以形成网址。例如,我根据包含这些字符的数据构建的URL可能如下所示:

http://url.com/search/?brand=Franklin&Hédgson's

我使用此URL中的GET变量构建进一步的查找,这会导致一些特定的问题:

  1. é'字符会在出现时发送回MySQL,因此它们不会触发任何结果(因为字符占用了全部字符)数据库文本中的HTML表单。)

  2. 网址中的& 分隔变量,GET只返回 Franklin ,它应返回整个字符串。

    < / LI>

    有没有直接的方法来解决这个问题?

    感谢。

2 个答案:

答案 0 :(得分:2)

在创建链接之前,您应该对品牌= Franklin&amp;Hédgson进行编码,如果您使用php生成链接,请使用urlencode http://php.net/manual/en/function.urlencode.php

然后你可以使用htmlentities对查询进行编码,然后在查询http://www.php.net/manual/en/function.htmlentities.php

中将其发送到mysql

答案 1 :(得分:1)

那是因为'&amp;'在URL中启动一个新的GET变量。 '?'开始你的查询字符串中有2个项目,'brand'=“Franklin”和undefined =“Hédgson's”。

只要这些字符出现在您的网址中(当然是值内),您就应该使用list of URL escape codes。所以,'&amp;'当它被放入字符串时需要转义为'%26',以便GET能够正确读取它。