2011-03-09 81 views
8

我覺得這個有點愚蠢,但是有沒有更優雅的方式來格式化日期編號後綴(st,th),而不是必須調用日期()3次?PHP:格式化日期編號後綴在日期()

什麼我試圖輸出HTML:

<p>January, 1<sup>st</sup>, 2011</p> 

我在做什麼,現在在PHP(感覺很沉重):

//I am omitting the <p> tags: 
echo date('M j',$timestamp) 
. '<sup>' . date('S', $timestamp) . '</sup>' 
. date(' Y', $timestamp); 

任何人都知道一個更好的辦法?

回答

11

你只需要轉義由日期函數解釋的字符。

echo date('M j<\sup>S</\sup> Y'); // < PHP 5.2.2 
echo date('M j<\s\up>S</\s\up> Y'); // >= PHP 5.2.2 

PHP date documentation你必須與它們的特殊含義全部替換字符的列表。

12

這爲我工作:

echo date('M j\<\s\u\p\>S\<\/\s\u\p\> Y', $timestamp); 
+0

+1。當我看到有人回答這個問題時,我寫了80%。 – johankj 2011-03-09 15:03:11

+0

您可以將任何您喜歡的文本添加到php Date()函數中作爲字符串的一部分,只需確保您使用\轉義保留字符,如Trevor的答案中所示。 – 2011-03-09 15:08:32

1

相信date功能可以讓你把你想要的任何字符串,只要你逃脫所有格式的字符。

echo date('M j<\s\up>S<\/\s\up> Y', $timestamp); 
+1

您有英文序號後綴「S」轉義,這是錯誤的。我已經糾正了你。 – 2016-11-04 15:31:07