当前位置: 首页 > 知识库问答 >
问题:

PHP setlocale()不适用于ctype_alpha检查

龚钧
2023-03-14

我运行以下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将接受像äöüß这样的德语字符,如文档中所述:“如果文本中的每个字符都是来自当前语言环境的字母,则返回TRUE,否则返回FALSE。”但事实并非如此。我做错了什么?

PHP版本是:5.3。10-1ubuntu3。8.

共有1个答案

容修贤
2023-03-14

它没有文档记录,但是,由于您使用的是区域设置的utf8版本,如果您的文件编码也是UTF-8,则必须使用utf8\u 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进行测试。

 类似资料:
  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 问题内容: 我开始于: 然后尝试: 最终: 从那以后我发现: 因此,我已经解决了最初的问题(有点),但是为什么数组不能互相匹配? 问题答案: Javascript数组是对象,您不能简单地使用相等运算符来了解那些对象的 内容 是否相同。如果两个物体实际上是完全一样的情况下(如平等运营商将只测试,作品和太)。 如果您需要检查两个数组是否相等,我建议只遍历两个数组并验证所有元素具有相同的值(并且两个数组

  • 我有下面的输入类,当我在输入中触发没有'interactionId'参数的api时,我期望验证错误消息"interactionId不能为空",但是验证通过,我想可能是由于interactionId的默认值为0。 能找个人吗。当输入中没有给出“long”参数时,是否帮助对其强制执行此验证? 使用@NOTURTTY作为客户ID参数,它可以按预期工作。使用@NOTURTY作为长参数"interactio

  • 我能够成功地打电话给邮递员: /mfp/api/az/v1/token和 /mfpadmin/management-apis/2.0/runtimes/mfp/applications 我正在获取从/mfp/api/az/v1/token接收的承载令牌,并将其添加到/mfp/applications的授权标头中。 我收到了来自两者的200个响应,并从每个API中获取了预期的信息。 然后,我选择从P