我有幾個字符串變量在我的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