(PHP 4, PHP 5, PHP 7, PHP 8)
utf8_decode — UTF-8 エンコードされた文字列を、ISO-8859-1 に変換し、表現できない文字を置換する
$string
): string
この関数は、文字列 string
を UTF-8
エンコードから ISO-8859-1
へ変換します。
有効な UTF-8
ではない文字列バイト、
および ISO-8859-1
に存在しない UTF-8
の文字
(つまり、U+00FF
以降のコードポイント) は、
?
に置き換えられます。
注意:
ISO-8859-1
文字エンコーディングを使っているとマークされている 多くの Web ページが、実際にはそれと似たWindows-1252
を使っており、 Web ブラウザはISO-8859-1
Web ページをWindows-1252
として解釈しています。Windows-1252
はISO-8859-1
のある制御文字の代わりに、ユーロ記号 (€
) や curly quote (“
”
) を印字可能な文字として追加しています。 この関数はそうしたWindows-1252
文字を正しく変換しません。Windows-1252
の変換が必要な場合は、別の関数を使ってください。
string
UTF-8 エンコードされた文字列。
string
を ISO-8859-1 に変換した結果を返します。
バージョン | 説明 |
---|---|
7.2.0 | この関数は、XML拡張機能から PHP のコアに移動しました。 これより前のバージョンでは、 この関数は XML拡張機能 をインストールしていた場合にのみ利用可能でした。 |
例1 Basic examples
<?php
// Convert the string 'Zoë' from UTF-8 to ISO 8859-1
$utf8_string = "\x5A\x6F\xC3\xAB";
$iso8859_1_string = utf8_decode($utf8_string);
echo bin2hex($iso8859_1_string), "\n";
// Invalid UTF-8 sequences are replaced with '?'
$invalid_utf8_string = "\xC3";
$iso8859_1_string = utf8_decode($invalid_utf8_string);
var_dump($iso8859_1_string);
// Characters which don't exist in ISO 8859-1, such as
// '€' (Euro Sign) are also replaced with '?'
$utf8_string = "\xE2\x82\xAC";
$iso8859_1_string = utf8_decode($utf8_string);
var_dump($iso8859_1_string);
?>
上の例の出力は以下となります。
5a6feb string(1) "?" string(1) "?"