Когда я пытаюсь преобразовать  
обратно в пробел, у меня меняется поведение. Из CLI я получаю ожидаемое отображение пробела, однако дамп var говорит, что пробел состоит из двух символов:
php -r "var_dump(html_entity_decode(' '));"
string (2) ""
Когда я запускаю код из своего скрипта, который обрабатывается с помощью Apache, я получаю кодовую точку Unicode
error_log(html_entity_decode(' '));
\ xc2 \ xa0
Как получитьсимвол пробела?
Например, для моего реального использования:
$fname = 'John Smith';
get_headers('https://example.com/' . urlencode(html_entity_decode($fname))).jpg
это делает запрос к:
https://example.com/John%25C2%25A0Smith.jpg
мой запрос должен быть
https://example.com/John Smith.jpg
https://example.com/John+Smith.jpg
https://example.com/John%20Smith.jpg
Я использую сущности для своих имен, поэтому я должен декодировать символы UTF8, чтобы получить их реальный символ.