我有用戶輸入並使用htmlentities()來轉換所有實體。 但是,似乎有一些錯誤。當我在php編碼問題htmlentities
ääää öööö üüüü ääää
型我得到
ääää öööö üüüü ääää
它看起來像這樣
ääää à ¶Ã ¶Ã ¶Ã ¶Ã¼Ã¼Ã¼Ã¼ ääää
我在做什麼錯?該代碼是真的只有這個:
$post=htmlentities($post);
編輯1
下面是一些我使用的格式的目的(也有一些有用的功能,但它們)更多的代碼:
//Secure with htmlentities (mysql_real_escape_string() comes later)
$post=htmlentities($post);
//Strip obsolete white spaces
$post = preg_replace("/ +/", " ", $post);
//Detect links
$pattern_url='~(?>[a-z+]{2,}://|www\.)(?:[a-z0-9]+(?:\.[a-z0-9]+)[email protected])?(?:(?:[a-z](?:[a-z0-9]|(?<!-)-)*[a-z0-9])(?:\.[a-z](?:[a-z0-9]|(?<!-)-)*[a-z0-9])+|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(?:/[^\\/:?*"<>|\n]*[a-z0-9])*/?(?:\?[a-z0-9_.%]+(?:=[a-z0-9_.%:/+-]*)?(?:&[a-z0-9_.%]+(?:=[a-z0-9_.%:/+-]*)?)*)?(?:#[a-z0-9_%.]+)?~i';
preg_match_all($pattern_url, $post, $matches);
for ($i=0; $i < count($matches[0]); $i++)
{
if(substr($matches[0][$i],0,4)=='www.')
$post = str_replace($matches[0][$i],'http://'.$matches[0][$i],$post);
}
$post = preg_replace($pattern_url,'<a target="_blank" href="\\0">\\0</a>',$post);
//Keep line breaks (more than one will be stripped above)
$post=nl2br($post);
//Remove more than one linebreak
$post=preg_replace("/(<br\s*\/?>\s*)+/", "<br/>", $post);
//Secure with mysql_real_escape_string()
$post=mysql_real_escape_string($post);
當你說「真的只有這個」時,你能分享它的其餘部分嗎?我沒有看到你的PHP有什麼問題,所以這個問題可能在別的地方。 –
@stevether請參閱問題編輯。 – weltschmerz