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

时间:2015-04-25 13:03:23

标签: php string str-replace

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

something-------another--thing
       //^^^^^^^       ^^

我想用一个破折号代替多个破折号。

所以预期的输出是:

something-another-thing
       //^       ^

我尝试使用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...

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

3 个答案:

答案 0 :(得分:20)

使用preg_replace替换模式。

$str = preg_replace('/-+/', '-', $str);

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

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

答案 1 :(得分:3)

你可以使用

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

输出

something-another-thing

答案 2 :(得分:1)

如果您要清除带有多个Charakter的字符串,请使用以下命令:

$string="Hello,,,my text contains unused characters... What can i do???"
$newString=preg_replace('#([\-\.\?])\\1+#','$1',$string);

如果您有一个带有未知多个符号的字符串要清除,请使用以下命令:

$string="!!!!A string with ooooother unknoooooown multiple Signs!!!!"
$newString=preg_replace('#([.])\\1+#','$1',$string);