manual page对此保持沉默,尽管用户在其下方发布了评论,其中指出了ASCII代码为0x09
,0x0A
,0x0C
的字符, 0x0D
和0x20
,即TAB,LF,FF,CR和SPACE,被识别为“空格”,但没有给出来源。
如果PCRE与Perl兼容,显然,这可能不是那么简单,如this Perl documentation中所述。事实上,它可能会受到语言环境的影响,然后开始变得毛茸茸。
上下文是我正在尝试替换一个preg_match调用,该调用旨在检查仅空白字符串。
答案 0 :(得分:3)
根据PHP docs:
空格字符是HT(9),LF(10),VT(11),FF(12),CR(13)和空格(32)。请注意,此列表包含VT字符(代码11)。这使得“空间”与\ s不同,后者不包括VT(用于Perl兼容性)。
答案 1 :(得分:1)
在PCRE中,默认情况下,
\d
,\D
,\s
,\S
,\w
和\W
仅识别ASCII字符,即使在UTF模式下也是如此。但是,可以通过设置PCRE_UCP
选项来更改此选项。
根据this StackOverflow answer,当使用PCRE_UCP
修饰符时,PCRE_UTF8
选项与u
一起设置。
因此,如果您不使用u
修饰符,则\s
将仅匹配ASCII空白字符。如果你这样做,那确实会更复杂。