2012-11-27 29 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十六进制数组,这很乏味。 –