2016-11-21 14 views
2

Предполагая, что у меня есть жало, которое и htmlentities превращает его в
"a s d d".Как заменить декодированный неразрывный пробел (NBSP)

Как заменить (используя preg_replace) его без кодирования его сущностям?

Я пробовал preg_replace('/[\xa0]/', '', $string);, но он не работает. Я пытаюсь удалить эти специальные символы из моей строки, поскольку они мне не нужны.

Что такое возможности за пределами регулярного выражения?

Редактировать Строка Я хочу, чтобы разобрать: http://pastebin.com/raw/7eNT9sZr
с функцией preg_replace('/[\r\n]+/', "[##]", $text)
для более поздних implode("</p><p>", explode("[##]", $text))

Мой вопрос не совсем «как», чтобы сделать это (так как я мог бы кодировать объекты, удалить объекты я не» t необходимо и декодировать объекты). Но как удалить те, у которых есть только str_replace или preg_replace.

+0

'htmlentities' - предотвращение на xss. Если вы хотите визуализировать в браузере, параметр «nbsp» будет оцениваться только как пробел. Если нет, тогда нет функции – georoot

+2

, вы хотите заменить пробелы или ' '? – Joshua

+0

@georoot htmlentities предотвращает плохой вывод HTML (т. Е. Гарантирует, что информация испускается, а не данные), XSS - это только вредоносные неудачные данные. – user2864740

ответ

5

Проблема в том, что вы плохо указываете пространство без прерывания UTF-8. Правильный код 0xc2a0, вы указываете только половину кода этого символа.

Вы можете заменить его с помощью простого str_replace или с использованием регулярных выражений:

// faster solution 
$regular_spaces = str_replace("\xc2\xa0", ' ', $original_string); 

// more flexible solution 
$regular_spaces = preg_replace('/\xc2\xa0/', ' ', $original_string); 

Обратите внимание, что в случае str_replace, вы должны использовать кавычки для строки поиска, потому что только строки в кавычках обрабатываются и обрабатывается PHP (сначала он преобразует коды символов в фактический символ).

Обратите внимание, что код символа UTF-8 указан как два отдельных номера.

+0

Обратите внимание, что 'str_replace()' будет работать так же и намного быстрее. – simon

+0

@simon Спасибо, ты прав. Добавлен к моему ответу. –

+0

Я понятия не имел, что мне нужно написать '\ xc2 \ xa0' и написал' \ xc2a0' ... мой сбой. Спасибо! – Grzegorz

 Смежные вопросы

  • Нет связанных вопросов^_^