[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу заменить неразрывный пробел на простой
Гость_user
Здравствуйте.
Есть парсер. Он написан в UTF8. Получает строку с другого сайта в 1251.
Далее здесь в парсере пытаюсь убрать из этой строки все неразрывные пробелы (ну и еще кое-какие html эквиваленты). Ничего не получается. Это пробел как был так и есть.

В парсере:

   
$string = iconv( "CP1251","UTF-8", $string);
$string = str_replace(' ', ' ', $string);
$string = preg_replace('/(\&nbsp\;)/', ' ', $string);


Как убрать этот пробел?



Спустя 4 минуты, 46 секунд (12.07.2011 - 15:14) tatti написал(а):
не понимаю, что имеется ввиду под "неразрывный пробел"?

попробуй так
$string = preg_replace('/[\s]/', ' ', $string);

Спустя 58 секунд (12.07.2011 - 15:15) YVSIK написал(а):
А как у вас одна переменная имеет так много значений ?? dry.gif dry.gif blink.gif
какое пральное blink.gif

Спустя 3 минуты, 36 секунд (12.07.2011 - 15:19) Гость_user написал(а):
Люди, вы что? ))

Неразрывный пробел (раздел неразрывный пробел):
Неразрывный пробел

А переменная не имеет много значений, она поступенно обрабатывается и ей присваивается новое значение.

Спустя 4 минуты, 54 секунды (12.07.2011 - 15:24) tatti написал(а):
Гость_user
круто. меняешь пробел на пробел чтоли? rolleyes.gif

Спустя 2 минуты, 2 секунды (12.07.2011 - 15:26) Гость_user написал(а):
Да.
Я ж еще в первом сообщении написал. )

Не в обиду. Не выспались что ли? ))

Спустя 4 минуты, 58 секунд (12.07.2011 - 15:31) tatti написал(а):
соблюдай режим и будешь непобедим как Джим

Спустя 1 минута, 8 секунд (12.07.2011 - 15:32) Invis1ble написал(а):
попробуй / /s

вобще, это str_replace() решает
$string = str_replace('& nbsp;', ' ', $string); // без пробела

Спустя 32 минуты, 22 секунды (12.07.2011 - 16:04) Гость_user написал(а):
От зараза...
Не работает.
Str_replace решает, знаю. Но здесь почему-то не работает.
Более того выяснил, что если его убрать, то в получаемой строке все пробелы неразрывные. Т.е. str_replace заменяет их все успешно, но вот один остается всегда... Странно...

Спустя 9 минут, 39 секунд (12.07.2011 - 16:14) Invis1ble написал(а):
если что-то остается - то значит идет подряд несколько пробелов, тогда только регуляркой
$string = preg_replace('#(?:& nbsp;)+#s', ' ', $string); // опять же, без пробела после амперсанда :)


ПС. А htmlspecialchars_decode() не подходит?

Спустя 9 минут, 45 секунд (12.07.2011 - 16:23) Гость_user написал(а):
htmlspecialchars_decode() не подходит, пробовал.
Твой последний вариант тоже на работает. Спасибо за подсказку...
Ну его этот пробел, я логику чуть-чуть подправил, теперь вроде нормально.
Но причины незамены так и не понял, не нашел.

Спустя 14 минут, 6 секунд (12.07.2011 - 16:38) Invis1ble написал(а):
щас сам протестил у себя:
$string = 'Hel& nbsp;& nbsp;lo& nbsp;World!';
echo $string . '<br />';
echo preg_replace('#(?:& nbsp;)+#s', ' ', $string);

все работает
так что проблема очевидно не в регулярке

Спустя 1 час, 43 минуты, 32 секунды (12.07.2011 - 18:21) Winston написал(а):
Цитата (Гость_user @ 12.07.2011 - 15:09)
$string = iconv( "CP1251","UTF-8", $string);

Где вы видели такую запись? Это не правильно. Вот так нужно
$string = iconv( "WINDOWS-1251","UTF-8", $string);

Спустя 11 минут, 23 секунды (12.07.2011 - 18:32) Invis1ble написал(а):
PHPprogramer
cp1251 - это алиас для windows-1251

Спустя 7 месяцев, 17 дней, 22 часа, 2 минуты, 42 секунды (1.03.2012 - 16:35) Гость_Михаил написал(а):
utf8:

$content=str_replace("\xC2\xA0"," ",$content); 


или
$content = iconv('UTF-8','cp1251',$content);
$content = str_replace(chr(160), chr(32), $content);
$content = iconv('cp1251','UTF-8',$content);

Спустя 22 дня, 21 час, 36 минут, 28 секунд (24.03.2012 - 14:12) Гость_Андрей написал(а):
Цитата (Гость_Михаил @ 1.03.2012 - 13:35)
$content = str_replace(chr(160), chr(32), $content);


Вот эту строчку искал часов 6 к ряду smile.gif

Спасибо огромное!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.