$string = "Główny folder grafik<p>asd nc</p>";
echo htmlspecialchars($string);
在实时网站上
Główny folder grafik<p>asd nc</p>
on local
Główny folder grafik<p>asd nc</p>
什么是问题?我希望在实时网站上运行结果看起来像本地
答案 0 :(得分:1)
htmlspecialchars()
接受其他参数 - 第三个是charset。
尝试指定第三个参数。
答案 1 :(得分:1)
您需要在htmlspecialchars()函数中添加额外的参数。以下应该有效:
htmlspecialchars($string, ENT_QUOTES, "UTF-8");
答案 2 :(得分:0)
您可能希望将关于charset的可选参数传递给htmlspecialchars,默认情况下为ISO-8859-1。
答案 3 :(得分:0)
如果您需要翻译所有关联命名实体的字符串,请改用 htmlentities()
,该功能在所有方面都与 htmlspecialchars()
相同,除了 htmlentities()
, 所有具有 HTML 字符实体等效项的字符都被翻译成这些实体。
但即使是 htmlentities()
也不会对所有 unicode 字符进行编码。它编码它可以[所有 latin1] 的内容,而其他的则通过(例如`Љ)。
此函数参考 ansii 表来自定义包含/省略您想要/不想要的字符。
(注意:肯定没那么快)
/**
* Unicode-proof htmlentities.
* Returns 'normal' chars as chars and weirdos as numeric html entites.
* @param string $str input string
* @return string encoded output
*/
function superentities( $str ){
// get rid of existing entities else double-escape
$str = html_entity_decode(stripslashes($str),ENT_QUOTES,'UTF-8');
$ar = preg_split('/(?<!^)(?!$)/u', $str ); // return array of every multi-byte character
foreach ($ar as $c){
$o = ord($c);
if ( (strlen($c) > 1) || /* multi-byte [unicode] */
($o <32 || $o > 126) || /* <- control / latin weirdos -> */
($o >33 && $o < 40) ||/* quotes + ambersand */
($o >59 && $o < 63) /* html */
) {
// convert to numeric entity
$c = mb_encode_numericentity($c,array (0x0, 0xffff, 0, 0xffff), 'UTF-8');
}
$str2 .= $c;
}
return $str2;
}