PHP → Функция str_replce не удаляет пробелы

Если вызов  str_replace для удаления пробелов не дает нужного результата:

$text = str_replace(' ', '', $text)

То вероятнее всего между словами располагаются не пробелы, а другие спецсимволы, например неразрывный пробел’\u00a0‘ или другой символ, который не всегда легко отличим от пробела.

В таком случае попробуйте следующее решение:

$text = preg_replace('/\s+/ui', '', $text);
  • Зачем вы учите людей плохому?

  • Аргументы?

  • Для начала неплохо было бы объяснить, что это за символ, и откуда он там вообще взялся. Очевидно, что в данном случае это неразрывный пробел.

    Байты, которые вы привели (194 и 160), могут отличаться в разных кодировках. В UTF-8 одни в других юникодах — другие.

    Решение
    str_replace(html_entity_decode(‘ ‘), », $text);
    и то лучше того, что вы указали.

    Хотя и то, и то негибкие и сильно зависят от внутренних кодировок (mb_internal_encoding) и кодировки обрабатываемого текста.

    Как вариант, можно пользоваться регулярными выражениями:
    preg_replace(‘/s+/ui’, », $text);

  • С доводами согласен, статья за 2013. Поправил, спасибо за неравнодушие.