2009-09-01 44 views
0

我使用mysql_real_escape_string()將一些數據保存在數據庫中,因此單引號可以像這樣'轉義。它在瀏覽器中看起來不錯,但是當我將文本保存在txt文件中時,如何將它轉換回單引號?還原轉義字符

+0

在什麼語言?您應該只需調用一個字符串替換函數就可以用'''替換'&#39'。 – 2009-09-01 10:19:14

+0

在PHP中。我在想同樣的事情。猜猜我會這樣做。 – Psyche 2009-09-01 10:24:40

回答

4

請注意:mysql_real_escape_string()轉撇號''只有HTML導向的功能做的,所以你必須有htmlentities()在腳本中的某處調用。

至於你的問題,你要尋找的功能是html_entity_decode()

echo html_entity_decode(''', ENT_QUOTES); 
2

這就是爲什麼你不應該在數據庫中存儲編碼文本的原因。您應該將其存儲爲原始格式,並在顯示時進行編碼。

現在您必須檢查函數編碼的字符,並編寫字符串替換,以相反的順序將它們轉換回來。

僞代碼示例:

s = Replace(s, "'", "'") 
s = Replace(s, "&lt;", "<") 
s = Replace(s, "&gt;", ">") 
s = Replace(s, "&amp;", "&") 
-1

這只是「'」的ASCII值,使用CHR拿回來一個字符。下面的代碼

$string = "Hello &#39; Man"; 
$string = preg_replace('|&#(\d{1,3});|e', 'chr(\1)', $string); 
echo $string; # Hello ' Man