【问题标题】:Replacing spaces only between words with a hyphen and remove all other spaces [duplicate]仅用连字符替换单词之间的空格并删除所有其他空格[重复]
【发布时间】:2020-04-22 17:15:44
【问题描述】:

如何删除所有空格但单词之间有连字符,尤其是当字符串的开头或结尾有空格时?

例如:

"   Cow jumped   over the moon    "

应该是:

"Cow-jumped-over-the-moon"

我尝试了以下方法,但我不确定如何去掉字符串前后没有连字符的空格。

$string_with_dashes = str_replace(' ','-',$string);

【问题讨论】:

  • 这能回答你的问题吗? php Replacing multiple spaces with a single spacepreg_replace("/\s+/", "-", trim($string))
  • @ggorlen 谢谢 - 它回答了部分问题 - 不完全是我想要的。
  • 你试过代码了吗?看起来这会产生你想要的相同输出,trim 头部和尾部,preg_replace/\s+/
  • 因此修改答案中的代码以满足您的需求。它可以满足您的要求。
  • @MagnusEriksson 我明白了......完美 - 谢谢!

标签: php regex


【解决方案1】:

你可以先修剪$string

$string = " Cow jumped over the moon ";
$string_with_dashes = str_replace(' ','-',trim($string));
echo $string_with_dashes;

如果你想减少单词之间的多个空格,你可以匹配 1+ 个水平空格 \h+ 用连字符替换它们。

$string_with_dashes = preg_replace("/\h+/", "-", trim($string));

【讨论】:

  • 听起来不错!!!但是如果字符串中有两个或三个空格怎么办。例如overthe 之间有 3 个空格?
  • 在这种情况下,您可以像这样爆炸字符串: $stringArray = explode(" ", $string); /// 它将变成一个字符串。 $joinedString = join("-", $stringArray);然后实施上述解决方案
猜你喜欢
  • 1970-01-01
  • 2016-11-27
  • 2014-11-20
  • 1970-01-01
  • 2018-05-14
  • 2020-03-16
  • 2011-03-18
  • 2019-01-03
  • 2020-01-14
相关资源
最近更新 更多