gpt4 book ai didi

PHP setlocale() 不适用于 ctype_alpha 检查

转载 作者:行者123 更新时间:2023-12-04 18:32:32 24 4
gpt4 key购买 nike

我运行这个 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 之后会接受像 äöüß 这样的德语字符,如文档中所述: "Returns TRUE if every character in text is a letter from the current locale, FALSE otherwise."但事实并非如此。
我在这里做错了什么?

PHP版本是:5.3.10-1ubuntu3.8

最佳答案

它没有记录,但是,因为您使用的是 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 进行了测试。

关于PHP setlocale() 不适用于 ctype_alpha 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19929965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com