PHP中\s匹配的空格是什么?

PHP中\s匹配的空格是什么?,php,regex,Php,Regex,PHP中转义序列\s匹配的字符的完整列表是什么? 一些正则表达式风格包括垂直空格和此转义序列中的其他字符。PHP仅对水平空格字符使用\h: 根据: 为了与Perl兼容,\s与VT字符(代码)不匹配 11). 这使得它不同于POSIX“space”类。\s 字符有HT(9)、LF(10)、FF(12)、CR(13)和空格(32)。如果 Perl脚本中包含“use locale;”,\s可能与VT字符匹配- 呃。在PCRE中,它永远不会这样做 所以,如果“垂直空间”指的是垂直标签,答案是否定的

PHP中转义序列\s匹配的字符的完整列表是什么?
一些正则表达式风格包括垂直空格和此转义序列中的其他字符。

PHP仅对水平空格字符使用
\h

根据:

为了与Perl兼容,\s与VT字符(代码)不匹配 11). 这使得它不同于POSIX“space”类。\s 字符有HT(9)、LF(10)、FF(12)、CR(13)和空格(32)。如果 Perl脚本中包含“use locale;”,\s可能与VT字符匹配- 呃。在PCRE中,它永远不会这样做

所以,如果“垂直空间”指的是垂直标签,答案是否定的

The sequences \h, \H, \v, and \V are features that were added to Perl at release 5.10. In contrast to the other sequences, which match only ASCII characters by default, these always match certain high-valued codepoints in UTF-8 mode, whether or not PCRE_UCP is set. The horizontal space characters are: U+0009 Horizontal tab U+0020 Space U+00A0 Non-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+202F Narrow no-break space U+205F Medium mathematical space U+3000 Ideographic space The vertical space characters are: U+000A Linefeed U+000B Vertical tab U+000C Formfeed U+000D Carriage return U+0085 Next line U+2028 Line separator U+2029 Paragraph separator 序列\h、\h、\v和\v是添加到Perl中的特性 第5.10版。与仅匹配的其他序列相比 默认情况下,ASCII字符始终与某些高值字符匹配 UTF-8模式下的代码点,无论是否设置了PCRE_UCP。 水平空格字符为: U+0009水平选项卡 U+0020空间 U+00A0非中断空间 U+1680奥格姆空间标记 U+180E蒙古语元音分隔符 U+2000四元 U+2001 Em四元 U+2002 En空间 U+2003电磁空间 U+2004每个em空间三个 U+2005每个em空间四个 U+2006每个em空间6个 U+2007图形空间 U+2008标点符号空间 U+2009精简空间 U+200A头发空间 U+202F狭窄无中断空间 U+205F介质数学空间 U+3000表意空间 垂直空格字符为: U+000A线路馈线 U+000B垂直选项卡 U+000C Formfeed U+000D回车 U+0085下一行 U+2028线路分离器 U+2029段落分隔符 发件人:

\s任何与\p{Z}匹配的字符, 加上HT、LF、FF、CR

从第页开始:

泛型字符类型

\s     any white space character
为了与Perl兼容,\s未用于匹配VT字符 (代码11),这使得它不同于POSIX“space”类。 然而,Perl在5.18版中添加了VT,而PCRE在5.18版中也加入了VT 第8.34版。默认\s字符现在是HT(9)、LF(10)、VT (11) 、FF(12)、CR(13)和空格(32),它们被定义为白色 “C”区域设置中的空格。如果特定于语言环境,此列表可能会有所不同 匹配正在进行。例如,在某些地区 “不间断空格”字符(\xA0)被识别为空白, 而在其他情况下,VT字符不是

因此,
\s
将匹配5个字符以及更多字符,具体取决于:

  • PCRE库版本
  • 区域设置

  • 比较不同版本的PHP的preg_匹配结果。

    嗯,说它与垂直选项卡不匹配-我不知道垂直空格是什么。水平空格字符是什么?@Stephan-我只是。在文件中搜索序列\h、\h、\v和\v“
    \h
    可能更适合您,具体取决于您的需要。我已使用水平和垂直字符列表编辑了您的文章。虽然引用正确,但这取决于编译时设置。PHP在代码周围使用了一个
    #ifdef PCRE_UCP
    。不应该依赖它。我也在这里搜索列表。但是页面可能已经改变了。下面是列表:由\s匹配的空白仅表示这5个字符:9=0x09=水平制表符,10=0x0A=换行符,12=0x0C=换行符,13=0x0D=回车符,32=0x20=空格,