【问题标题】:How to determine if a non-English string is in upper case?如何确定非英文字符串是否为大写?
【发布时间】:2011-08-10 15:11:11
【问题描述】:

我正在使用以下代码来检查所有字符都是大写字母的字符串:

        if (preg_match('/^[\p{Lu}]+$/', $word)) {

这适用于英语,但无法检测带有重音符号、俄语字母等的字母。\p{Lu} 是否应该适用于所有语言?有更好的方法吗?

【问题讨论】:

  • 我一直认为 \p{Lu} 应该适用于所有支持 Unicode 的字母。是否完全无法将任何西里尔字母识别为大写?
  • 好吧,它在 Perl 中运行良好,因为如果数据是字符数据而不是字节数据,或者如果它在模式中看到 Unicode 属性,Perl 会自动打开 /u。可悲的是,PHP 默认情况下并未在 Unicode 中使用 PCRE。有没有办法像在 Perl 中一样打开 /ueverywhere ?顺便说一句,如果 Unicode 不区分大小写匹配,您可能仍然需要注意范围内的 Unicode,因为 we just recently fixed a bug 与此相关。我自己还没有使用 PCRE 进行等效测试。

标签: php regex pcre


【解决方案1】:

一个特殊的选项是打开 Unicode 匹配模式的 /u,而不是默认的 8 位匹配模式。您应该为使用 \x{FFFF}、\X 或 \p{L} 匹配 Unicode 字符、字素、属性或脚本的正则表达式指定 /u。 PHP 会将 '/regex/u' 解释为 UTF-8 字符串而不是 ASCII 字符串。

http://www.regular-expressions.info/php.html --

【讨论】:

  • 做到了!感谢您的快速回复。
【解决方案2】:

使用函数你可以改变字符串的大写 .... 此处可用的功能: string name="manish niitian"; console.Writeline("你的大写字符串是:"+name.UPPERCASE());

【讨论】:

    猜你喜欢
    • 2011-11-14
    • 2014-03-30
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2012-01-05
    • 1970-01-01
    • 2016-08-22
    相关资源
    最近更新 更多