首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP不会从数据库中str_replace单引号

问PHP不会从数据库中str_replace单引号
EN

Stack Overflow用户
提问于 2013-05-29 13:19:34
回答 1查看 479关注 0票数 0

这解释起来真的很奇怪,所以它是这样的…

我从包含未转义的单引号的phpmyadmin中获取数据。我正在尝试通过在php头文件中使用Content-Type: text/html;来将'转换为'。

在数据库的一列中,该值为:This year's...

我将内容类型设置为<?php header('Content-Type: text/html; charset=UTF-8'); ?>

我是用mysql_fetch_assoc()获取数据的,所以它应该输出This year&apos;s。但是,它输出的是This year�s...。

然后,我手动从数据库中删除了This year's...,并将其替换为相同的This year's... (直接在数据库中)。我再次将内容类型设置为text/html,并得到以下结果:

代码语言:javascript
复制
This year&apos;s...

就这样..。这几乎无法解释。通过表单将单个报价提交到数据库。我获取它并将内容类型设置为text/html,它将'输出为�。如果我进入数据库,手动删除',并用相同的'替换它,它就会输出&apos;。

有没有人经历过这种奇怪的怪癖,或者意识到它可能是什么?

更新:

数据库中的值是由表单上传的This year's。引用在数据库中是未转义的。下面是我如何获取数据的方法。我希望将'转换为&apos;。

代码语言:javascript
复制
<?php
    header('Content-Type: text/html; charset=UTF-8');
    include('init.inc.php');

    function get_feeds() {
        $query = mysql_query("SELECT * FROM test ORDER BY id DESC LIMIT 1");
        while($fetch = mysql_fetch_assoc($query)) {

            $text = $fetch['text'];         

            echo $text;         

            }
        }

?>
<?php get_feeds(); ?>

它输出This year�s。

然后,我从数据库中删除This year's,并在适当的位置手动编写This year's。它输出这个This year&apos;s。

EN

回答 1

Stack Overflow用户

发布于 2013-05-29 22:15:39

在插入到数据库之前,将特殊字符转换为HTML实体

代码语言:javascript
复制
htmlspecialchars("This year's");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16806034

复制
相关文章

相似问题

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