用一个破折号替换多个破折号

MM *_* PP 8 php string str-replace

我有一个看起来像这样的字符串:

something-------another--thing
       //^^^^^^^       ^^
Run Code Online (Sandbox Code Playgroud)

我想用一个破折号替换多个破折号.

所以预期的产量是:

something-another-thing
       //^       ^
Run Code Online (Sandbox Code Playgroud)

我尝试使用str_replace(),但我必须为每一个可能的破折号再次编写代码.那么如何用一个短划线替换任何数量的破折号呢?

对于Rizier:

尝试:

 $mystring = "something-------another--thing";
 str_replace("--", "-", $mystring);
 str_replace("---", "-", $mystring);
 str_replace("----", "-", $mystring);
 str_replace("-----", "-", $mystring);
 str_replace("------", "-", $mystring);
 str_replace("-------", "-", $mystring);
 str_replace("--------", "-", $mystring);
 str_replace("---------", "-", $mystring);
 etc...
Run Code Online (Sandbox Code Playgroud)

但是这个字符串在两个单词之间可能有10000行.

Bar*_*mar 22

使用preg_replace替换的模式.

$str = preg_replace('/-+/', '-', $str);
Run Code Online (Sandbox Code Playgroud)

正则表达式-+匹配1个或多个连字符的任何序列.

如果您不理解正则表达式,请阅读www.regular-expression.info上的教程.


Sat*_*aty 5

您可以使用

<?php
$string="something-------another--thing";
echo $str = preg_replace('/-{2,}/','-',$string);
Run Code Online (Sandbox Code Playgroud)

输出

something-another-thing
Run Code Online (Sandbox Code Playgroud)