代码之家  ›  专栏  ›  技术社区  ›  Shawn

php regex问题:如何匹配拉丁瑞典语字符集中的非ascii字母?

  •  1
  • Shawn  · 技术社区  · 16 年前

    我有一个字符串:verbesserungsvorschl_ge,我想是德语的。现在我想用php中的regex来匹配它。更一般地说,我想匹配像德语这样的字符,这些字符在ascii集中不是100%。

    谢谢。

    4 回复  |  直到 13 年前
        1
  •  2
  •   Jan Goyvaerts    16 年前

    如果您使用的是8位字符集,那么regex [\x80-\xFF] 匹配任何非ascii字符。在php中,这将是:

    if (preg_match('/[\x80-\xFF]/', $subject)) {
      # String has non-ASCII characters
    } else {
      # String is pure ASCII or empty
    }
    
        2
  •  1
  •   Geert    16 年前
    preg_match_all('~[^\x00-\x7F]~u', 'Verbesserungsvorschläge', $matches);
    
        3
  •  0
  •   Devin Ceartas    16 年前

    这是一个痛苦的世界,但是您可以尝试使用十六进制值,如“/verbesserungsvorschl\xc3ge/”中的简单扩展字符。

    十六进制值可以在一个表中找到,用于动态确定

    echo dechex( ord( ä ) ); 
    

    对于完整的unicode,可以使用/u作为修饰符。见 http://www.php.net/manual/en/regexp.reference.unicode.php 以及其他页面。我的理解是unicode在php version 6中会更好地工作。

        4
  •  0
  •   Sarang    13 年前

    以下是这些角色的官方描述 http://www.unicode.org/charts/PDF/U0080.pdf 在这里可以匹配ascii字符