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

Posted

技术标签:

【中文标题】仅用连字符替换单词之间的空格并删除所有其他空格[重复]【英文标题】: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 space。 preg_replace("/\s+/", "-", trim($string)) @ggorlen 谢谢 - 它回答了部分问题 - 不完全是我想要的。 你试过代码了吗?看起来这会产生你想要的相同输出,trim 头部和尾部,preg_replace/\s+/ 因此修改答案中的代码以满足您的需求。它可以满足您的要求。 @MagnusEriksson 我明白了......完美 - 谢谢! 【参考方案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);然后实施上述解决方案

以上是关于仅用连字符替换单词之间的空格并删除所有其他空格[重复]的主要内容,如果未能解决你的问题,请参考以下文章

编写程序,输入字符串(包含空格),统计其中单词的个数,单词之间以一个或多个空格分隔。

PHP电子邮件表单正在通过,单词之间没有空格,也没有特殊字符

T21:单词替换

仅用一个“_”替换空格

c ++如何提取单词之间的空格(如果有的话)

删除字符和单词之间的空格[重复]