在php中保存特殊字符

时间:2013-02-24 00:09:15

标签: php html ascii special-characters

我已经读了好几个小时了,我无法完全绕过编码问题。 我正在使用PHP 指定charset = utf-8。 我希望能够输入某些字符,例如子弹•和箭头⇒进入textarea。 我直接保存到mySQL数据库,并在那里正确存储符号。 要显示数据库中保存的文本,我调用以下函数来翻译textarea的存储符号。

function htmlspecialchars2($string, $flags=ENT_NOQUOTES){
$string = htmlspecialchars($string, $flags);    // to help prevent code injection
$string = str_replace(chr(149), "&#8226", $string);  // converts bullet to html
$string = str_replace("⇒", "&#8658",$string);   // don't know the ascii code for the arrow
return $string;
}

这适用于子弹,但不适用于箭头。有关如何保存(然后重新显示)扩展HTML字符的任何建议。我已经阅读了所有我能找到的东西,但我遗漏了一些东西。

2 个答案:

答案 0 :(得分:2)

你可能正在寻找htmlentities。这应该将具有HTML字符实体等价物的所有字符转换为HTML实体(以反转使用html_entity_decode)。


PS:在我的系统上,htmlentities('⇒', ENT_COMPAT, 'UTF-8')返回⇒

答案 1 :(得分:1)

对于任何跟随的人,解决方案有两部分

1)One Trick Pony(谢谢你)提到的需要很多,这才是真正的答案。

2)但是,另一半需要明确设置会话的编码。     mysqli_set_charset($ link,“utf8”);

注意:新代码更简单。我没有调用上面显示的特殊函数htmlspecialchars2(),而只是调用htmlentities($ string,ENT_NOQUOTES,'UTF-8')