我有一塊數據很大,可能會包含引號和雙引號。反向mysql_real_escape_string
我正在使用mysql_real_escape_string()
來安全地存儲它。
當我把它拉出來看它時,所有的引號都被轉義了。我嘗試使用str_replace
來擺脫所有的引號,但是將\r\n
轉換爲rn
。 :(
我怎樣才能扭轉這種局面,這樣數據又回到了它去的路上
我有一塊數據很大,可能會包含引號和雙引號。反向mysql_real_escape_string
我正在使用mysql_real_escape_string()
來安全地存儲它。
當我把它拉出來看它時,所有的引號都被轉義了。我嘗試使用str_replace
來擺脫所有的引號,但是將\r\n
轉換爲rn
。 :(
我怎樣才能扭轉這種局面,這樣數據又回到了它去的路上
你用魔術引號
注:?如果magic_quotes_gpc的啓用, 首先應用的stripslashes ()到 數據。使用此函數[mysql_real_escape_string]在其上已經躲過將 逃脫數據兩次數據 。
誰說的?
$keyword = "TEST'TEST";
$result1 = mysql_real_escape_string($keyword);
echo $result1 --> TEST\'TEST
$result2 = nl2br(stripslashes($result));
echo $result2 --> TEST'TEST
如果你真的想扭轉這種因爲你的數據是如何格式化的,這是我想出了一個解決方案:
function mysql_unreal_escape_string($string) {
$characters = array('x00', 'n', 'r', '\\', '\'', '"','x1a');
$o_chars = array("\x00", "\n", "\r", "\\", "'", "\"", "\x1a");
for ($i = 0; $i < strlen($string); $i++) {
if (substr($string, $i, 1) == '\\') {
foreach ($characters as $index => $char) {
if ($i <= strlen($string) - strlen($char) && substr($string, $i + 1, strlen($char)) == $char) {
$string = substr_replace($string, $o_chars[$index], $i, strlen($char) + 1);
break;
}
}
}
}
return $string;
}
逃避串後,您的字符串可以成爲「TEST \ r \ n'TEST「,在這種情況下,nl2br將不起作用。所以我做了這樣的事情: stripslashes(str_replace('\ r \ n','
',nl2br(「TEST \ r \ n \'TEST」))) – 2015-06-20 13:14:16