2011-03-09 47 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