首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自From实体的奇怪行为

来自From实体的奇怪行为
EN

Stack Overflow用户
提问于 2015-06-08 17:35:23
回答 2查看 57关注 0票数 0

据我了解,撇号(单引号)的html实体版本是'

当我将数据添加到数据库时,它就是这样被编码的。但是,当我试图搜索数据库时,我遇到了一个问题,因为我使用的代码将撇号设置为',即缺少零。

我已经将页面简化为最基本的测试代码:

代码语言:javascript
复制
$hotelname = filter_input(INPUT_GET, 'hotelname', FILTER_SANITIZE_STRING);
//$hotelname = "Auberge de l'Etang Bleu";
$hotelname = htmlentities($hotelname,ENT_QUOTES,"UTF-8");
echo $hotelname;
exit();

它为什么要这么做?不同版本的PHP中是否有类似的东西?

为了进一步混水摸鱼,如果我注释掉第一行,取消注释第二行,htmlentities似乎什么也不做,它用撇号与版本相呼应。

标点符号和口音总是把我逼疯,但这比平时更糟。是我吗?(无疑是这样。)

编辑

下面看看我的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-08 17:42:27

据我了解,撇号(单引号)的html实体版本是'

你理解错了。'是正确的(快速测试表明浏览器两者都理解,但您的DB将考虑它们不同的字符串)。

  • http://www.fileformat.info/info/unicode/char/27/index.htm
  • http://en.wikipedia.org/wiki/Apostrophe#Unicode

您还应该考虑在显示上进行编码,而不是在保存到数据库时,这将完全避免差异。PHP似乎表明一些版本输出',而另一些版本输出'

票数 0
EN

Stack Overflow用户

发布于 2015-06-09 10:05:44

最终看来,罪魁祸首似乎是FILTER_SANITIZE_STRING。它正在从‘中删除0。

我想我现在已经解决了这个问题

代码语言:javascript
复制
$hotelname = $_GET['hotelname'];
$hotelname = htmlentities($hotelname, ENT_QUOTES);
$hotelname = mysqli_real_escape_string($db,$hotelname);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30715605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档