首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Addslashes只转义简单引号。

Addslashes只转义简单引号。
EN

Stack Overflow用户
提问于 2013-02-12 16:25:17
回答 2查看 787关注 0票数 0

PHP代码中有几个字符串变量,如下所示:

代码语言:javascript
复制
"A piece of text with sometimes 'simple quotes' in it, and most important,
some parts "between double quotes" inside the string itself, playing the role
of quotations marks"

不幸的是,我从数据库中获得了这些数据,并需要将其放入JSON字符串格式。当我在json_encode生成的JSON对象上循环(我用PDO作为关联数组获得数据,然后对它进行编码)并对循环中的每个字符串使用addslashes时,只会转义简单的引号。

(我知道这不是很好的格式,但这是我从数据库中得到的.)

最奇怪的是,在文档中,我看到可以用这个函数转义双引号,所以我尝试将另一个双引号放在字符串的第一个位置,以检查是否会转义:

$mystring = '"' . $mystring;

它是逃出来的,我不知道为什么后面出现在字符串中的其他人不是。

这里是我当前的片段(没有转义双引号) :

代码语言:javascript
复制
$dbh = new PDO("mysql:host=" . HOST . ";dbname=" . DATABASE, DB_USER, DB_PASSWORD);

$data = $dbh -> query("MY SELECT REQUEST");
$result = $data -> fetchAll(PDO::FETCH_ASSOC);

$result_inter;

foreach ($result as $key => $entry) {
    foreach ($entry as $key2 => $entry_inter) {
        $new_value = $entry_inter;
        $new_value = strip_tags($new_value);
        $new_value = addslashes($new_value);
        $new_key[$key2] = $new_value;
    }
    $result_inter[$key] = $new_key;
}

$result = json_encode($result_inter);
echo($result);

如果有人知道怎么解决这个问题,我会很感激的。

EN

回答 2

Stack Overflow用户

发布于 2013-02-12 16:27:07

如果您想把它放在JSON中,请使用json_encode而不是addslashes中的任何巫术。

票数 2
EN

Stack Overflow用户

发布于 2014-09-10 14:51:41

您不需要处理strip_tagsaddslashes或任何其他函数。如果要用JSON对数组进行编码,只需使用json_encode

如果您想转义引号,您可能忽略了这样一个事实:如果您想转义引号,可能会有不同的可用选项,如JSON_HEX_APOSJSON_HEX_QUOT

例:

代码语言:javascript
复制
$string = "'apo'";
echo json_encode($string , JSON_HEX_APOS);

将输出"\u0027apo\u0027"

我想这就是你要找的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14837078

复制
相关文章

相似问题

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