regepx - 字符串中的奇数空格

时间:2016-07-28 09:38:38

标签: php regex

我正在对某些字符串进行一些正则表达式,在我的模式中,我匹配空格\s

但是在某些字符串中我遇到了一些奇怪的空格..当转换为十六进制a0

如何将所有奇怪的空格转换为普通空格,以便可以使用regexp以及\s来检测它?

当字符串显示为UTF8时,所有a0个字符都表示为

在HEX中输入

a03535a03832a03834a03135a02da053452e6e723aa0444ba03132a03638a03336a03933

输入为字符串

 55 82 84 15 - SE.nr: DK 12 68 36 93

2 个答案:

答案 0 :(得分:4)

a0代表  - 不间断的空间。

您可以将其与:

匹配
[\s\xA0]

答案 1 :(得分:2)

如果使用[\s]修饰符,则无需向\s字符类添加不间断空格,/u可以匹配任何Unicode空格:

'/\s/u'

请参阅regex demo

来自pcre.org

  

默认的“空格”字符是HT(9),LF(10),VT(11),FF(12),CR(13)和空格(32)......   如果使用Unicode属性支持编译PCRE,并且设置了PCRE_UCP选项,则会更改行为,以便使用Unicode属性来确定字符类型:< em> \s符合\p{Z}\h\v 的任何字符

使用PCRE_UCP修饰符启用/u动词和Unicode语义。