仅用一个“_”替换空格

Posted

技术标签:

【中文标题】仅用一个“_”替换空格【英文标题】:replacing spaces with just one "_" 【发布时间】:2013-10-31 09:43:54 【问题描述】:

我试图用一个下划线替换所有连续的空格;通过使用以下代码行,我可以轻松地将一个空格替换为“_”:

str_replace(" ", "_",$name);

Evan 我可以通过以下代码行将一个空格替换为“_”:

str_replace("  ", "_",$name);

但问题是我不知道要检查多少个空格!

如果我的问题不清楚,请告诉我您需要进一步澄清的部分。

谢谢

【问题讨论】:

php Replacing multiple spaces with a single space的可能重复 【参考方案1】:

可能是最干净和最易读的解决方案:

preg_replace('/[[:space:]]+/', '_', $name);

这将用一个下划线替换所有空格(无论有多少)。

【讨论】:

这将用破折号代替空格,而不是下划线。 也可以使用 preg_replace('/\s+/', '_', $name); @xlordt 除了会替换制表符和换行符。 正确,但谁知道......也许他会回来并意识到这就是他所需要的哈哈。【参考方案2】:

您可以使用正则表达式完成此操作:

[ ]+

这将匹配“一个或多个空格字符”;如果您想要“任何空白”(包括制表符),您可以改用\s+

将其与 PHP 的 preg_replace() 一起使用:

$name = preg_replace('/[ ]+/', '_', $name);

【讨论】:

【参考方案3】:

使用preg_replace():

$name = preg_replace('/ +/', '_', $name);

+ 在正则表达式中表示“重复 1 次或多次”,因此这将匹配 [SPACE] 以及 [SPACE][SPACE][SPACE]

【讨论】:

【参考方案4】:

你可以使用正则表达式:

$name = preg_replace("#\s+#", "_", $name);

【讨论】:

以上是关于仅用一个“_”替换空格的主要内容,如果未能解决你的问题,请参考以下文章

仅用连字符替换单词之间的空格并删除所有其他空格[重复]

剑指offer_替换空格

剑指offer_替换空格

剑指offer_替换空格

剑指offer_替换空格

为啥 PHP 将 $_COOKIE 中的加号替换为空格?