2

このphpコードを実行します:

echo "<br>system locales: ".system('locale -a')."<br><br>";
echo "current locales: ".setlocale(LC_ALL, 0)."<br><br>";
var_dump(setlocale (LC_ALL, 'de_DE.utf8'));
echo "current locales: ".setlocale(LC_ALL, 0)."<br><br>";
echo "accepting german characters?: ".ctype_alpha("äüöß")."<br><br>";
echo "accepting characters in general?: ".ctype_alpha("test")."<br><br>";
echo "rejecting numbers?: ".ctype_alpha("tes2t")."<br><br>";

次の出力を取得します。

C C.UTF-8 POSIX de_DE.utf8
system locales: de_DE.utf8

current locales: C

string(10) "de_DE.utf8" current locales: de_DE.utf8

accepting german characters?:

accepting characters in general?: 1

rejecting numbers?

ドキュメントに書かれているように、setlocale (LC_ALL, 'de_DE.utf8') の呼び出し後、ctype_alpha は äöüß のようなドイツ語の文字を受け入れると予想しまし: " しかし、そうではありません。ここで何が間違っていますか?

PHP のバージョン: 5.3.10-1ubuntu3.8

4

1 に答える 1

0

文書化されていませんがutf8、ロケールのバージョンを使用しているため、ファイルのエンコーディングも UTF-8 である場合はutf8_decode()、それを機能させるために使用する必要があります。

setlocale(LC_ALL, 'de_DE.utf8');
// Assuming your file encoding is also UTF-8
var_dump(ctype_alpha(utf8_decode('äüöß'))); // bool(true)
// Assuming your file encoding is anything else
var_dump(ctype_alpha('äüöß')); // bool(true)

UTF-8、ISO-8859-1、KOI8-U、および Windows 1252 ファイル エンコーディングを使用する OS X Mavericks マシンで PHP 5.4.17-cli を使用してテスト済み。

于 2013-11-12T14:21:46.267 に答える