Как убрать &nbsp (неразрывный пробел) с помощью php

/ 👁 92

Часто бывает, что информация, которую мы получаем из базы данных приходит к нам не совсем в том виде, в котором бы должна.

Из-за этого приходится обрабатывать пришедшие данные, чтобы получить необходимый результат. Ситуации бывают разные. Например, бывает, что нужно заменить определенные символы и слова на другие или обрезать пришедшую строку до определенного символа.

Сегодня поговорим о ситуации, когда строка приходит вроде бы с пробелами, но на самом деле вместо пробелов в коде вы увидите  . Это легко увидеть, если посмотреть на выводимую переменную в инспекторе кода любого браузера.

Зачем убирать закодированный неразрывный пробел

  — По сути является элементом компьютерной кодировки. Визуально на веб-странице он отображается как обычный пробел. Главное его отличие — это то, что   является неразрывным пробелом, а следовательно строка не разрывается.

Почему и когда это важно?

Ну например, если мы захотим для какой-то  строки использовать css свойство word-break, чтобы задать определенные правила переноса, то для строки с неразрывными пробелами это свойство сработает некорректно.

Убираем неразрывные пробелы из строки

Если информация приходит из базы данных, то на ум приходят 2 варианта: либо прошерстить базу и заменить неразрывные пробелы, либо исправить уже пришедшую строку.

Мы воспользуемся вторым вариантом. Сразу хочу сказать, что просто str_replace здесь не сработает. Нужно будет добавить в нашу формулу еще и htmlentities  — которая преобразует все возможные символы в соответствующие html сущности.

Допустим, что мы получили из базы данных строку с неразрывными пробелами и сохранили ее в переменной my_text.

Тогда код для замены неразрывных пробелов на обычные будет выглядеть так:

 

<?php
$new_text = str_replace("&nbsp;"," ", htmlentities($my_text));

Теперь в переменной $new_text у нас хранится обработанный текст.

Вот и всё. Надеюсь эта статья вам поможет. Делитесь в социальных сетях, оставляйте комментарии. Приятной работы 😉

Tags:

Leave a Reply