2017-07-04 9 views
0

したがって、htmlentities()を使用してPHPで文字列をエスケープしようとしています。
問題は、htmlentitiesが空の文字列を返すことです。
htmlentities()はUTF-8にもかかわらず空の値を返します

私はこの文字列をhtmlの<form>で受け取りました。 formタグを含むページには、以下のメタタグがあります<meta charset="utf-8">

私の文字列がUTF-8でエンコードされ、htmlentites() 3番目のパラメータは'UTF-8'であると私はまだ空の文字列を取得します。ここで

は私のコードです:それはから来るどこ

// Original string is é-è 
// Expected output is &eacute;-&egrave; 
string '�-�' (length=5) // Original string but why is the length 5 ? 
string 'UTF-8' (length=5) 
string '' (length=0) 
string '' (length=0) 
string '&atilde;&copy;-&atilde;&uml;' (length=28) // WTF ?? 

誰もが知っている:

$str = strtolower(trim($str)); 
var_dump($str, mb_detect_encoding($str), htmlentities($str), htmlentities($str, ENT_COMPAT, 'UTF-8'), htmlentities($str, ENT_COMPAT, 'ISO-8859-1')); 

そして、ここでは表示さのvar_dump何ですか?

答えて

0

私は何が間違っているかを知りました。 strtolowerが問題の原因です。
ここ

var_dump($str, mb_detect_encoding($str), htmlentities($str), htmlentities($str, ENT_COMPAT, 'UTF-8'), htmlentities($str, ENT_COMPAT, 'ISO-8859-1')); 
$str = trim($str); 
var_dump($str, mb_detect_encoding($str), htmlentities($str), htmlentities($str, ENT_COMPAT, 'UTF-8'), htmlentities($str, ENT_COMPAT, 'ISO-8859-1')); 
$str = strtolower($str); 
var_dump($str, mb_detect_encoding($str), htmlentities($str), htmlentities($str, ENT_COMPAT, 'UTF-8'), htmlentities($str, ENT_COMPAT, 'ISO-8859-1')); 

mb_strtolowerが出力されて使用してください:どういうわけか

// raw string é-è 
string 'é-è' (length=5) 
string 'UTF-8' (length=5) 
string '&eacute;-&egrave;' (length=17) 
string '&eacute;-&egrave;' (length=17) 
string '&Atilde;&copy;-&Atilde;&uml;' (length=28) 
// trim('é-è') 
string 'é-è' (length=5) 
string 'UTF-8' (length=5) 
string '&eacute;-&egrave;' (length=17) 
string '&eacute;-&egrave;' (length=17) 
string '&Atilde;&copy;-&Atilde;&uml;' (length=28) 
// strtolower('é-è') 
string '�-�' (length=5) 
string 'UTF-8' (length=5) 
string '' (length=0) 
string '' (length=0) 
string '&atilde;&copy;-&atilde;&uml;' (length=28) 

strtolower()だけで 'ISO-8859-1' 動作するようだ、とあなたはvar_dumpsで見ることができるように&Atilde;&atilde;

+0

に変換しますか?自分でこの質問を投稿しましたか? –

+0

@SaadSuri投稿する(または怒ってしまう)前に答えを見つけ、回答を投稿することに決めました。多分それは誰かを助けるでしょう。 –

関連する問題