我知道有很多类型的空间(em空间,空间,稀疏空间,不间断空间等),但是,我提到的所有这些都有HTML实体(至少,PHP的htmlentities()返回类似的东西&EMSP ;.
但是,那些没有HTML实体的空间呢?
示例:http://iorbix.com/1001-p-Nuno-Peralta
查看此帐户的昵称.它在前面有很多""(空格),对我们来说是可见的(这不会发生在 ).
我尝试使用正则表达式过滤,使用\ x转义,使用str_replace()过滤,以空格作为参数,根本没有运气!
您对如何过滤所有类型的空白有什么建议吗?
sal*_*the 22
\s默认情况下,不会匹配值大于128的空白字符.为了实现这些,您可以更好地利用其他支持UTF-8的序列.
(标准免责声明:我正在浏览PCRE源代码以编译下面的列表,我可能会错过一个字符或输入错误的内容.请原谅我.)
\p{Zs} 火柴:
\h(水平空白)与\p{Zs}上面的相同,加上
类似地,对于匹配垂直空白,有几个选项.
\p{Zl} 匹配U + 2028行分隔符.
\p{Zp} 匹配U + 2029段落分隔符.
\v(垂直空白)匹配\p{Zl},\p{Zp}以及以下内容
让我们再回到开始,在UTF-8模式(即使用u模式修改)\s将匹配任何字符\p{Z}相匹配(这是任何\p{Zs},\p{Zl}并且\p{Zp}将匹配),加
长话短说(我打赌你读了以上所有内容,不是吗?)你可能想要使用\s但确保采用UTF-8模式/\s/u.把它用于一些实际用途,从字符串中过滤掉那些匹配的空白字符,你会做类似的事情
$new_string = preg_replace('/\s/u', '', $old_string);
Run Code Online (Sandbox Code Playgroud)
最后,如果你真的非常关心\s(LF和NEL)中没有包含的垂直空白,那么你可以使用字符类[\s\v]来匹配上面列出的所有26个空白字符.