2012-06-13 20 views
0

我有一個包含電影的運行時間的字符串:我想它談到「1個小時19分鐘」到「1H19米」

1 h 19 min 

現在看起來像這樣:

1h 19m 

我知道這應該是非常容易的,但我只是無法找到解決方案。

+1

你有沒有試過*碼*解決方案最簡單的方法? – Esailija

+0

從哪個PHP函數中獲得該字符串 – 2012-06-13 08:25:44

+0

雖然它總是看起來像'xx h yy min'嗎?它可能有秒嗎? –

回答

4

您可以刪除所有空格的數字和非數字用正則表達式之間:

$str = preg_replace('/(?<=\d) *(?=\D)/', '', $str); 

See it in action

更新:不幸的是,這並沒有把「min」變成「m」,我並沒有注意到這一點。

鑑於此,帶有數組的str_replace解決方案(如bsdnoobz's)確實是唯一可行的方法。但只是爲了它的樂趣:

$str = preg_replace('/(?<=\d) *(\D)\S*/', '$1', $str); 

See it in action

+0

輸出是'1小時19分鐘'不是'1小時19分鐘',我猜... – Nalaka526

+0

哦,這麼近,但它不會把'min'變成'm' :-) – paxdiablo

+0

你可以嘗試str_replcae來打開它; ) – Rinzler

5
$runtime="1 h 19 min"; 
$runtime=str_replace(" h","h",$runtime); 
$runtime=str_replace(" min","m",$runtime); 
+1

或'$ runtime = str_replace(array(「h」,「min」),array(「h」,「m」),$ runtime); ' –

6
$str = str_replace(array(' h', ' min'), array('h', 'm'), $str); 
+0

我總是對不知道數組的函數的人感到驚訝 - 絕對是這樣做的「正確」方法。 –

0

$runtime = "1 h 19 min";

$runtime = str_replace(" h", "h", $runtime);

$runtime = str_replace(" min", "min", $runtime);