我的 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 对象json_encode
(我将数据作为关联数组与 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);
如果有人知道如何解决这个问题,我将不胜感激。