我有几个字符串变量在我的PHP代码,如下所示:addslashes的只有逃避简单引号
"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);
如果任何人有一个关于如何解决这个线索,我会很感激。
你可以发布填充数组的代码吗? – hek2mgl 2013-02-12 16:28:54
我通过使用'fetchAll(PDO :: FETCH_ASSOC);'从PDO中获取数据来填充数组。 – 2013-02-12 16:32:21
需要整个循环(可能简化)..您可以将其添加到问题。我想我知道什么是错的,但需要代码。 – hek2mgl 2013-02-12 16:33:49