2015-07-29 11 views
2

У меня есть строка в UTF-8 с non-printable space, которые мне нужно заменить non-printable linebreakUTF-8 PHP заменить нон печати символа «пробел» с не для печати символа «линии разрыва»

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

+0

Возможный дубликат [Удалить Unicode Zero Width Space PHP] (http://stackoverflow.com/questions/22600235/remove-unicode-zero-width-space-php) – Typoheads

+2

Непечатаемое пространство/развязка? Эти вещи не существуют в Юникоде, поэтому я ожидаю, что их будет довольно сложно найти. –

ответ

3

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

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

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

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

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

+0

Первый фрагмент работает для меня как шарм :), я просто добавил в параметр '$ replace' разрыв строки с enter keyobard, и это сработало. Благодарю. – JTC

+0

для тех, у кого есть неприятное время, когда preg_replace не забирает его, когда это нужно, это работает как шарм! Я просто добавил в шестнадцатеричном редакторе значения невидимого пространства e2 80 8b в моем случае, и он действительно сработал. после того, как многие вещи потерпели неудачу, это первое решение, которое работает прямо для меня – Tschallacka

0

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

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

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

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