2016-08-02 42 views
2

我在這個格式(從一個特定的腳本中提取)的日期,關於這一點我想刪除所有空格之間:PHP:更換雙層空間只非空白字符

$date="Date:   Tue Aug 2 10:43" 

很容易,但技巧是:在此之前,我想在「2」(或任何其他第9天的第9天)之前添加「0」,但「0」必須替換「Aug 「和」2「。 達到此目的的最佳方法是什麼?

記住日期將(顯然)每天都會更改,所以我們不能簡單地做這樣的事情:

$date=str_replace("Aug 2","Aug 02",$date); 

相反,我認爲最好的辦法是做這樣的事情:

$date=str_replace("[x] [x]","[x] 0[x]",$date); 

[X]意爲: 「任何非空白字符」(請原諒我這種近似!)

回答

1

嗯,也許是解決方案?

$date=preg_replace("/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d)(\s+)/","$1 0$2$3",$date); 
+0

也許不是「最好的」解決方案,但實際上最簡單的實現到我的代碼。按照預期工作。非常感謝 ! – Blackounet

3

使用date()strtotime()做這個任務

$date = strtotime('Tue Aug  2 10:43'); //white spaces won't effect 
echo date('D M 0\2 h:i',$date); 
// output the date just replace the 2 with your 9th of month letter 
+0

必須是所有人的「最好的」解決方案,但在這種特殊情況下,Akremon解決方案非常適合我,因爲這對我來說是最容易實現的。無論如何,非常感謝您的幫助! – Blackounet

1

看着你的輸入數據,看起來你的特定腳本產生了一個格式化的輸出 - 這意味着它使用填充空格。這意味着字符串的長度可能始終相同 - 無論其中的實際日期和時間如何。如果這是真的,那麼你可以使用一個非常簡單的代碼:

if($date{22} == ' ') $date{22} = '0'; // replace space with zero 
$date = preg_replace('/ +/', ' ', $date); // convert multiple spaces into single space 

但是,如果你的具體的腳本不產生otput然後格式化你將不得不使用的東西有點不同,但同樣很簡單:

$date = preg_replace('/ +/', ' ', $date); // convert multiple spaces into single space 
$arr = explode(' ', $date); // split text into words by spaces 
if($arr[3] < 10) $arr[3] = '0'.$arr[3]; 
$date = implode(' ', $arr); // combine words 
+0

我使用了Lakremon解決方案,但非常感謝您的評論和您的時間,希望它能在未來幫助阿迪。 – Blackounet