你的位置:
问答吧
-> PHP基础
-> 问题详情
正则表达式问题,如何匹配全角空格?
如题,我写了一个要匹配回行两端所有连续半角和全角空格的正则表达式,如下:
~([\x20|\xa1a1]*)[\x0a|\x0d0a]+([\x20|\xa1a1]*)~i
但是不成功,总是将第一个空格前面的字符都匹配了进去,请各位帮我看看
作者: sanders_yao
发布时间: 2006-04-12
我顶第一次
作者: sanders_yao
发布时间: 2006-04-12
[[:space:]]
作者: changsheng7588
发布时间: 2006-04-12
多谢楼上的,但是遇到全角空格似乎还是不行
$Exp = "~([[:space:]]*)[\r\n|\n]+([\x[[:space:]]*)~i";
$content = preg_replace($Exp, "\r\n ", $content);
echo $content;
?>
作者: sanders_yao
发布时间: 2006-04-12
不能放在[]里面
作者: 雨伞
发布时间: 2006-04-12
不好意思上面的没有完全改过来
但是改完了还是不行:
~[[:space:]]*(\r\n|\n)+[[:space:]]*~i
[[:space:]]照楼上版主所说的不加[]的话会报错:
Warning: preg_replace(): Compilation failed: POSIX named classes are supported only within a class at offset 0
作者: sanders_yao
发布时间: 2006-04-12
QUOTE:
原帖由 sanders_yao 于 2006-4-12 09:07 AM 发表
如题,我写了一个要匹配回行两端所有连续半角和全角空格的正则表达式,如下:
~(*)+(*)~i
但是不成功,总是将第一个空格前面的字符都匹配了进去,请各位帮我看看^[\xa1-\xa1\x20]*|[\xa1-\xa1\x20]*$
作者: yoryoue
发布时间: 2006-04-12
谢谢楼上的,但是也不行
我的意思不是匹配文本两端的空格
而是类似" \n\n\r\n "这样的,一般是出现在文本中间
作者: sanders_yao
发布时间: 2006-04-13
QUOTE:
原帖由 sanders_yao 于 2006-4-13 09:35 AM 发表
谢谢楼上的,但是也不行
我的意思不是匹配文本两端的空格
而是类似" \n\n\r\n "这样的,一般是出现在文本中间你的意思清除“每一行”字符串头尾的空格?不仅仅是整个字符串的头尾空格。是这个意思?
作者: yoryoue
发布时间: 2006-04-13
我的意思是将字符串中所有换行两侧的空格(包括全角空格)匹配
我是否应该换个思路,先将字符串按照换行拆开再按楼上所做的匹配个部分两端的空格?
一会儿试一下
作者: sanders_yao
发布时间: 2006-04-13
^[\xa1-\xa1\x20]*|[\xa1-\xa1\x20]*$m
作者: yoryoue
发布时间: 2006-04-13
再次感谢楼上的
这种方法可以而且为了适应\r\n的换行需要稍微改一下
^[\xa1-\xa1\x20]*|[\xa1-\xa1\x20]*\r*$m
作者: sanders_yao
发布时间: 2006-04-13