2012-11-27 32 views
0

我想逃避一些用戶輸入的形式。htmlentities和法國字符

if(!empty($_SESSION['descr'])) 
{ 
    $descr = htmlentities($_SESSION['descr']); 
    $descr = stripslashes($descr); 
    $descr = html_entity_decode($descr); 

    echo"<textarea cols=\"50\" rows=\"10\" name=\"descr\" >".$descr."</textarea>"; 
} 
else 
{ 
    echo "<textarea cols=\"50\" rows=\"10\" name=\"descr\" ></textarea>"; 
} 

我沒有用html_entity_decode()擺在首位,然後我意識到,如果用戶把一些法國字符,那麼它將無法正確顯示它們。 保存是否以與html_entity_decode()一樣的方式使用它?

回答

0

你應該改變字符串爲ISO-8859-15,它拿起字符的編碼是LATIN-1缺失(即法語字符):

$descr = htmlentities($desc,ENT_COMPAT,'ISO-8859-15'); 

ENT_COMPAT可能不是你要找的標誌爲,但你可以在manual找到一個字幕。

+0

我會推薦'UTF-8'而不是'ISO-8859-15'。如果用戶輸入希臘語,俄語或希伯來字符會怎麼樣?今天推薦使用除UTF-8之外的任何東西。 – dotancohen

+0

同意,我能想到的唯一的其他選擇是使用字符串替換字符列表vs十六進制數組,這很乏味。 –