Regis Zaleman Regis Zaleman - 1 month ago 14
PHP Question

PHP: Formatting the day number suffix in php with date()

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?

acm acm
Answer

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.