空白的各种变体有哪些?

Pra*_*hav 1 php regex unicode removing-whitespace

我想用下划线替换所有类型的空格。

但我的问题是空白有很多种。目前发现的是:

  1. 不间断空格
  2. 空间
  3. 全空间
  4. 狭小的空间

我在用

preg_replace("/\p{Z}/", "_", $text);
Run Code Online (Sandbox Code Playgroud)

我想要所有类型的空白的列表。

Wik*_*żew 6

您可以使用

\n\n
preg_replace("/\\s/u", "_", $text);\n
Run Code Online (Sandbox Code Playgroud)\n\n

u修饰符将使\\sUnicode 识别,并且它将匹配任何 Unicode 空白字符。

\n\n

这是对字符串的测试U+0020U+00A0U+1680U+2000U+2001U+2002U+2003U+2004U+2005U+2006U+2007U+2008U+2009U+200AU+202FU+205FU+3000U+2028U+2029TextU+000B\\r\\n\\t

\n\n
$text = " \xc2\xa0\xe1\x9a\x80\xe2\x80\x80\xe2\x80\x81\xe2\x80\x82\xe2\x80\x83\xe2\x80\x84\xe2\x80\x85\xe2\x80\x86\xe2\x80\x87\xe2\x80\x88\xe2\x80\x89\xe2\x80\x8a\xe2\x80\xaf\xe2\x81\x9f\xe3\x80\x80\xe2\x80\xa8    \xe2\x80\xa9    Text\\x0B\\r\\n\\t";\n$res = preg_replace("/\\s/u", "_", $text);\necho $res; // => ___________________Text____\n
Run Code Online (Sandbox Code Playgroud)\n\n

查看PHP 演示

\n\n
U+0020  SPACE\nU+00A0  NO-BREAK SPACE\nU+1680  OGHAM SPACE MARK\nU+2000  EN QUAD\nU+2001  EM QUAD\nU+2002  EN SPACE\nU+2003  EM SPACE\nU+2004  THREE-PER-EM SPACE\nU+2005  FOUR-PER-EM SPACE\nU+2006  SIX-PER-EM SPACE\nU+2007  FIGURE SPACE\nU+2008  PUNCTUATION SPACE\nU+2009  THIN SPACE\nU+200A  HAIR SPACE\nU+202F  NARROW NO-BREAK SPACE\nU+205F  MEDIUM MATHEMATICAL SPACE\nU+3000  IDEOGRAPHIC SPACE\nU+2028  LINE SEPARATOR\nU+2029  PARAGRAPH SEPARATOR\nU+000A  LINE FEED \nU+000B  LINE TABULATION\nU+000D  CARRIAGE RETURN (CR)\nU+0009  CHARACTER TABULATION\n
Run Code Online (Sandbox Code Playgroud)\n