utf 8 — UTF-8 PHP заменяет непечатаемый символ «пробел» с непечатаемым символом «разрыв строки»

У меня есть строка в UTF-8 с non-printable space который мне нужно заменить на non-printable linebreak

что-то вроде этого str_replace('&nbsp;','<br />',$string); но с non-printable characters,

2

Решение

Это буквально работает, если вы вводите определенный символ между кавычками:

str_replace(' ', '', $string)
^   ^^
put characters here

Поскольку это может быть довольно сложно набрать и / или сделать исходный код менее очевидным, вы можете записать эти строковые литералы в их байтовой нотации. Просто выясните, о каком конкретном символе вы говорите и в каких байтах он закодирован:

str_replace("\xE2\x80\xAF", "\x0A", $string)

Это заменяет ZERO-WIDTH SPACE (кодировка UTF-8 E2 80 AF) с регулярным переводом строки (0A). Посмотрите это в вашей таблице выбора Unicode. Возможно, проверьте существующую строку, используя echo bin2hex($string) выяснить, какие байты он содержит.

3

Другие решения

Как насчет: str_replace('&nbsp;' , PHP_EOL , $string);

Или даже лучше: str_replace( array( '&nbsp;', ' ' ) , PHP_EOL , $string);

0

По вопросам рекламы [email protected]