I feel a bit silly for this one, but is there a more elegant way to format the day number suffix (st, th) other than by having to call the date() 3 times?
What I am trying to output in html:
<p>January, 1<sup>st</sup>, 2011</p>
What I am doing now (feels very heavy) in php:
//I am omitting the <p> tags:
echo date('M j',$timestamp)
. '<sup>' . date('S', $timestamp) . '</sup>'
. date(' Y', $timestamp);
Anyone knows a better way?
You just have to escape characters that are interpreted by the date function.
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
At PHP date documentation you have a list with all characters replaced by their special meaning.
This worked for me:
echo date('M j\<\s\u\p\>S\<\/\s\u\p\> Y', $timestamp);
I believe the
date function allows you to put in any string that you want, provided that you escape all format characters.
echo date('M j<\s\up>S<\/\s\up> Y', $timestamp);