首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换括号之间的分隔符

问替换括号之间的分隔符
EN

Stack Overflow用户
提问于 2016-03-29 21:14:54
回答 3查看 152关注 0票数 2

我需要帮助。请假设以下PHP变量

代码语言:javascript
复制
$string="Hello this
is
me on [the
line
to
] have no clue";

现在,我想将括号内的换行符替换为空格,以获得以下内容

代码语言:javascript
复制
Hello this
is
me on [the line to] have no clue

有什么想法吗?我知道如何处理所有的换行符,但我不知道如何只处理括号内的换行符。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2016-03-29 21:16:05

使用基于正则表达式的正则表达式。

代码语言:javascript
复制
preg_replace('~\n(?=[^\[\]]*\])~', ' ', $str);

DEMO

票数 1
EN

Stack Overflow用户

发布于 2016-03-29 21:22:43

您可以使用preg_replace_callback匹配[...]子字符串,并仅替换匹配中的换行符:

代码语言:javascript
复制
$s = "Hello this\nis\nme on [the\nline\nto\n] have no clue";
echo preg_replace_callback('/\[\s*([^][]*?)\s*]/', function($m){
    return "[" . str_replace("\n", " ", $m[1]) . "]";   
}, $s);

请参阅IDEONE demo

[\[\s*([^][]*?)\s*]](https://regex101.com/r/bM0mB5/1)正则表达式说明:

  • \[ -方块开始bracket
  • \s* - whitespace
  • ([^][]*?) - ]
  • \s*和whitespace
  • ]之外的尽可能少的0+字符- 0+ [ - 0+
票数 1
EN

Stack Overflow用户

发布于 2016-03-29 21:16:16

只需使用nl2br() function即可

代码语言:javascript
复制
 echo nl2br($string);

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36285392

复制
相关文章

相似问题

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