用PHP替换多个实例

用PHP替换多个实例,php,string,replace,Php,String,Replace,说我有 sometext somemore--test--test2 我怎么能让它替换超过1个的所有Instance?让它只替换1个,这样看起来就像这样 sometext-somemore-test-test2使用正则表达式:s/-+/-/The+表示“前面的一个或多个字符”。用于($i=0;$i

说我有

sometext somemore--test--test2

我怎么能让它替换超过1个的所有Instance?让它只替换1个,这样看起来就像这样


sometext-somemore-test-test2使用正则表达式:
s/-+/-/
The+表示“前面的一个或多个字符”。

用于($i=0;$i 对于您认为可能重复的每个字符,单独使用str_replace()的效率远远不如使用str_replace()的效率,但它会起作用

如果您只想将两个破折号替换为一个破折号:

$text = str_replace("--", "-", $text);
使用

使用以下命令:

echo preg_replace("/-+/","-","sometext-somemore--test---test2");
//prints sometext-somemore-test-test2

可以使用正则表达式和函数执行此操作:

$str = 'sometext-somemore--test---test2';
echo preg_replace('/-+/', '-', $str);
将给你:

sometext-somemore-test-test2

我在这里使用的模式:
-+

  • 匹配一个
    -
  • 一次或多次:
    +
    • 请参阅PCRE手册中关于此的部分

如果您对正则表达式感兴趣,请毫不犹豫地阅读本手册的一节;-)

我看不出for/if循环是如何工作的。。据我所知,如果字符4和5都是“x”,它将“55”替换为“5”。您还需要检查$text[$i]='-',并且必须使用substr_replace($text'-',$i,2)而不是str_replace()。不过,正则表达式可能是一种方法。@MSpreij:看来Brendan试图创建一种算法来替换任意重复字符@Brendan Long:试试这个:preg_replace('{(..\1+}','$1',$text);是的,当我读到它时,我想问题是如何替换任意两个重复字符:\
sometext-somemore-test-test2