18

在 PHP 中,获取以 utf8 编码的所有 Unicode空白字符的完整列表(字符串数组)的最优雅方法是什么?

我需要它来生成测试数据。

4

4 回答 4

13

此电子邮件(在此处存档)包含以 UTF-8、UTF-16 和 HTML 编码的所有 Unicode 空白字符的列表。

在存档链接中查找“utf8_whitespace_table”函数。

static $whitespace = array(
    "SPACE" => "\x20",
    "NO-BREAK SPACE" => "\xc2\xa0",
    "OGHAM SPACE MARK" => "\xe1\x9a\x80",
    "EN QUAD" => "\xe2\x80\x80",
    "EM QUAD" => "\xe2\x80\x81",
    "EN SPACE" => "\xe2\x80\x82",
    "EM SPACE" => "\xe2\x80\x83",
    "THREE-PER-EM SPACE" => "\xe2\x80\x84",
    "FOUR-PER-EM SPACE" => "\xe2\x80\x85",
    "SIX-PER-EM SPACE" => "\xe2\x80\x86",
    "FIGURE SPACE" => "\xe2\x80\x87",
    "PUNCTUATION SPACE" => "\xe2\x80\x88",
    "THIN SPACE" => "\xe2\x80\x89",
    "HAIR SPACE" => "\xe2\x80\x8a",
    "ZERO WIDTH SPACE" => "\xe2\x80\x8b",
    "NARROW NO-BREAK SPACE" => "\xe2\x80\xaf",
    "MEDIUM MATHEMATICAL SPACE" => "\xe2\x81\x9f",
    "IDEOGRAPHIC SPACE" => "\xe3\x80\x80",
);
于 2010-02-09T09:34:54.637 回答
13

多年后,在寻找 unicode 空白字符时,这个问题在 Google 上仍然有最高的结果。devio 的回答很好,但不完整。在撰写本文时(2017 年 10 月),维基百科在此处提供了空白字符列表:https ://en.wikipedia.org/wiki/Whitespace_character

该列表指定了 25 个代码点,而当前接受的答案列出了 18 个。包括其他七个代码点,该列表是:

U+0009  character tabulation
U+000A  line feed
U+000B  line tabulation
U+000C  form feed
U+000D  carriage return
U+0020  space
U+0085  next line
U+00A0  no-break space
U+1680  ogham space mark
U+180E  mongolian vowel separator
U+2000  en quad
U+2001  em quad
U+2002  en space
U+2003  em space
U+2004  three-per-em space
U+2005  four-per-em space
U+2006  six-per-em space
U+2007  figure space
U+2008  punctuation space
U+2009  thin space
U+200A  hair space
U+200B  zero width space
U+200C  zero width non-joiner
U+200D  zero width joiner
U+2028  line separator
U+2029  paragraph separator
U+202F  narrow no-break space
U+205F  medium mathematical space
U+2060  word joiner
U+3000  ideographic space
U+FEFF  zero width non-breaking space
于 2017-10-09T00:24:42.937 回答
3

http://en.wikipedia.org/wiki/Space_%28punctuation%29#Spaces_in_Unicode

不幸的是,它没有提供 UTF-8,但它确实在网页中有字符,因此您可以剪切并粘贴到您的编辑器中(如果它保存在 UTF-8 中)。或者,http://www.fileformat.info/info/unicode/char/180E/index.htm提供 UTF-8(将“180E”替换为您正在查找的十六进制 UTF-16 值)。

这也提供了@devio 的出色答案所遗漏的几个额外字符。

于 2013-12-18T08:32:10.637 回答
0
0x9 b'\t'
0xa b'\n'
0xb b'\x0b'
0xc b'\x0c'
0xd b'\r'
0x20 b' '
0x85 b'\xc2\x85'
0xa0 b'\xc2\xa0'
0x1680 b'\xe1\x9a\x80'
0x180e b'\xe1\xa0\x8e'
0x2000 b'\xe2\x80\x80'
0x2001 b'\xe2\x80\x81'
0x2002 b'\xe2\x80\x82'
0x2003 b'\xe2\x80\x83'
0x2004 b'\xe2\x80\x84'
0x2005 b'\xe2\x80\x85'
0x2006 b'\xe2\x80\x86'
0x2007 b'\xe2\x80\x87'
0x2008 b'\xe2\x80\x88'
0x2009 b'\xe2\x80\x89'
0x200a b'\xe2\x80\x8a'
0x200b b'\xe2\x80\x8b'
0x200c b'\xe2\x80\x8c'
0x200d b'\xe2\x80\x8d'
0x2028 b'\xe2\x80\xa8'
0x2029 b'\xe2\x80\xa9'
0x202f b'\xe2\x80\xaf'
0x205f b'\xe2\x81\x9f'
0x2060 b'\xe2\x81\xa0'
0x3000 b'\xe3\x80\x80'
0xfeff b'\xef\xbb\xbf'
于 2018-06-09T15:45:28.077 回答