首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php正则表达式未知空格

php正则表达式未知空格
EN

Stack Overflow用户
提问于 2016-04-30 11:58:22
回答 2查看 299关注 0票数 0

我很难弄清楚这个regexp是如何匹配多个空格的:

代码语言:javascript
复制
$str = '   ';

if (preg_match_all('/\s{2,}/', $str, $matches)) {
    var_dump($matches);
}

事实是,如果我用3个“实”空格替换str值,它就像预期的那样工作,但很明显,str中的字符不是空格(复制粘贴自其他源)!但是我需要用真正的空间来代替它们。

我的问题是:在str中那些简单的空间字符是什么,更重要的是,我如何在regexp中针对它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-30 12:08:30

中间字符是一个utf-8编码的非破坏空间.将u添加到正则表达式中,它将很好地工作,例如/\s{2,}/u

产出:

代码语言:javascript
复制
array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(4) "   "
  }
}

示例

票数 2
EN

Stack Overflow用户

发布于 2016-04-30 12:19:02

\s捕获的空白字符可以包括实际空格(代码0x20)、水平选项卡字符(0x09)、回车(0x0D)、行提要(0x0A)和表单提要(0x0C)。因此,如果要将所有这些字符转换为实际空格,可以使用以下一行:

代码语言:javascript
复制
$str=preg_replace('/\s/',' ',$str);

或者,如果要用单个实际空格替换两个或多个空格字符的序列,请使用以下方法:

代码语言:javascript
复制
$str=preg_replace('/\s{2,}/',' ',$str);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36954634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档