【问题标题】:What are all kinds of white space variants?什么是各种空白变体?
【发布时间】:2017-07-24 09:43:48
【问题描述】:

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

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

  1. 不间断空格
  2. 空间
  3. em 空格
  4. 窄空间

我正在使用

preg_replace("/\p{Z}/", "_", $text);

我想要一个所有空格类型的列表。

【问题讨论】:

    标签: php regex unicode removing-whitespace


    【解决方案1】:

    你可以使用

    preg_replace("/\s/u", "_", $text);
    

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

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

    $text = "                 
    
    Text\x0B\r\n\t";
    $res = preg_replace("/\s/u", "_", $text);
    echo $res; // => ___________________Text____
    

    PHP demo

    U+0020  SPACE
    U+00A0  NO-BREAK SPACE
    U+1680  OGHAM SPACE MARK
    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+202F  NARROW NO-BREAK SPACE
    U+205F  MEDIUM MATHEMATICAL SPACE
    U+3000  IDEOGRAPHIC SPACE
    U+2028  LINE SEPARATOR
    U+2029  PARAGRAPH SEPARATOR
    U+000A  LINE FEED 
    U+000B  LINE TABULATION
    U+000D  CARRIAGE RETURN (CR)
    U+0009  CHARACTER TABULATION
    

    【讨论】:

    • 感谢@Wiktor Stribiżew 快速准确的回答!
    猜你喜欢
    • 2011-01-28
    • 2021-09-14
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多