PHP代码中有几个字符串变量,如下所示:
"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;
它是逃出来的,我不知道为什么后面出现在字符串中的其他人不是。
这里是我当前的片段(没有转义双引号) :
$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);如果有人知道怎么解决这个问题,我会很感激的。
发布于 2013-02-12 16:27:07
如果您想把它放在JSON中,请使用json_encode而不是addslashes中的任何巫术。
发布于 2014-09-10 14:51:41
您不需要处理strip_tags、addslashes或任何其他函数。如果要用JSON对数组进行编码,只需使用json_encode。
如果您想转义引号,您可能忽略了这样一个事实:如果您想转义引号,可能会有不同的可用选项,如JSON_HEX_APOS或JSON_HEX_QUOT。
例:
$string = "'apo'";
echo json_encode($string , JSON_HEX_APOS);将输出"\u0027apo\u0027"。
我想这就是你要找的。
https://stackoverflow.com/questions/14837078
复制相似问题