trim (html_entity_decode()) — проблема с удалением nbsp из начала или конца строки

Несмотря на многолетний опыт разработки на php, порой натыкаюсь на совершенно рядовые, но неизвестные вещи. Это было для меня открытием и ударом — неспособность удалить пробел из строки

Официальная документация, содержит комментарий по этому поводу:

Замечание:
Может показаться странным, что результатом вызова trim(html_entity_decode(‘ ‘)); не является пустая строка. Причина том, что ‘ ‘ преобразуется не в символ с ASCII-кодом 32 (который удаляется функцией trim()),а в символ с ASCII-кодом 160 (0xa0) в принимаемой по умолчанию кодировке ISO-8859-1.

На моей практике, даже это утверждение оказалось неверным.   преобразуется не в один, а в целых два символа — chr(194) и chr(160)

А значит, чтобы удалить их, нужно немного доработать код

trim(str_replace(chr(194).chr(160), ' ', html_entity_decode($str)))
1 комментарий к “trim (html_entity_decode()) — проблема с удалением nbsp из начала или конца строки”
  1. Тихон 24.10.2017

Оставить комментарий