У меня есть строка в UTF-8
с non-printable space
который мне нужно заменить на non-printable linebreak
что-то вроде этого str_replace(' ','<br />',$string);
но с non-printable characters
,
Это буквально работает, если вы вводите определенный символ между кавычками:
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)
выяснить, какие байты он содержит.
Как насчет: str_replace(' ' , PHP_EOL , $string);
Или даже лучше: str_replace( array( ' ', ' ' ) , PHP_EOL , $string);