Convert ' to an apostrophe in PHP

Dave picture Dave · Jul 22, 2011 · Viewed 22.6k times · Source

My data has many HTML entities in it (• ...etc) including '. I just want to convert it to its character equivalent.

I assumed htmlspecialchars_decode() would work, but - no luck. Thoughts?

I tried this:

echo htmlspecialchars_decode('They're here.');

But it returns: They're here.

Edit:

I've also tried html_entity_decode(), but it doesn't seem to work:

echo html_entity_decode('They're here.')

also returns: They're here.

Answer

cmbuckley picture cmbuckley · Jul 22, 2011

Since ' is not part of HTML 4.01, it's not converted to ' by default.

In PHP 5.4.0, extra flags were introduced to handle different languages, each of which includes ' as an entity.

This means you can do something like this:

echo html_entity_decode('They're here.', ENT_QUOTES | ENT_HTML5);

You will need both ENT_QUOTES (convert single and double quotes) and ENT_HTML5 (or any language flag other than ENT_HTML401, so choose the most appropriate to your situation).

Prior to PHP 5.4.0, you'll need to use str_replace:

echo str_replace(''', "'", 'They're here.');