заменить & nbsp; символы, скрытые в тексте

Как удалить   (которые скрыты) и SPACES в нижнем тексте, но

  • удерживать символы UNICODE
  • hold tag

я тестировал:

  • Я использовал trim($string) => НЕ РАБОТАЕТ
  • Я использовал str_replace(' ', '', $string) => НЕ РАБОТАЕТ
  • Я использовал некоторое регулярное выражение => НЕ РАБОТАЕТ

      <br>تاريخ ورود: یکشنبه ۲۳ بهمن ماه ۱۳۹۰ 

ОБНОВИТЬ: Изображение скрытого благодаря

ОКОНЧАТЕЛЬНОЕ РЕШЕНИЕ:

  $string = htmlentities($string, null, 'utf-8'); $string = str_replace("&nbsp;", "", $string); 

Не проверено, но если вы используете что-то вроде:

 $string = preg_replace("/\s/",'',$string); 

Это должно удалить все пробелы.

ОБНОВИТЬ

Чтобы удалить все пробелы и &nbsp; ссылки, используйте что-то вроде:

 $string = preg_replace("/\s|&nbsp;/",'',$string); 

ОБНОВЛЕНИЕ 2

Попробуй это:

 $string = html_entity_decode($string); $string = preg_replace("/\s/",'',$string); echo $string; 

Забыл сказать, переконвертировать html-объекты, так что добавьте это после замены:

 htmlentities($string); 

Это решение будет работать, я его протестировал:

 $string = htmlentities($content, null, 'utf-8'); $content = str_replace("&nbsp;", "", $string); $content = html_entity_decode($content); 

Все решения над чем-то работают, пока не начнете работать с немецким языком, где есть такие письма:

 ä &auml; 

и другие. Я использую следующий код:

 $string = preg_replace ( "!\s++!u", ' ', $string ); 

Подробнее здесь: PCRE (3) Руководство по функциям библиотеки

Вторая строка прекрасна, но вы просто удаляете. Если вы также хотите удалить пробелы, добавьте:

 str_replace(' ', '', $string); 

Заменить – хорошая идея, но вам нужно использовать многобайтную функцию. Вы можете найти некоторые варианты в комментариях здесь: http://php.net/manual/en/ref.mbstring.php

Это сработало для меня.

 preg_replace("/&nbsp;/",'',$string) 

Это также будет работать:

 function clean($str) { $str = str_replace("&nbsp;", " ", $str); $str = preg_replace('/\s+/', ' ',$str); $str = trim($str); return $str; }