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

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

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

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

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

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

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

谢谢

【问题讨论】:

标签: php codeigniter


【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-09
        • 2020-02-15
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        • 2013-07-03
        相关资源
        最近更新 更多