2015-04-25 169 views
7

替換多個破折號我有一個字符串,它看起來像這樣:一個破折號

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。

+1

使用'preg_replace'。 – Barmar

+0

您是否嘗試過的東西? – Rizier123

+2

@ Rizier123他說他試過'str_replace' – Barmar

回答

16

使用preg_replace更換模式。

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

正則表達式匹配-+ 1個或多個連字符的任何序列。

如果你不理解正則表達式,在www.regular-expression.info閱讀教程。

2

可以使用

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

輸出

something-another-thing