仅用一个“_”替换空格
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);
【讨论】:
以上是关于仅用一个“_”替换空格的主要内容,如果未能解决你的问题,请参考以下文章