LINUX.ORG.RU

php mysq и пробел...


0

0

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

не могу понять в html коде есть запись вида(бес кавычек и именно 'пробел' а не ЭндНБСПточказапятая):
«Текст1 Текст2» (тоесть это переменная например $text1_text2)
но пробел какой то непонятный, он не берется функ-ией
str_replace(' ',",$text1_text2); и другие функ-ции его за пробел не считают... получил я этот пробел так:
вставив в мускул «Текст1ЭндНБСПточказапятаяТекст2» тоесть именно с символом неразрывного пробела... может кто-то встречался с подобным, а то не хочется менять символ во всей базе ради одного фильтра.

NEED HELP :)

Да забыл написать, что так тож не работает:
str_replace('ЭндНБСПточказапятая',",$text1_text2);

andry_mine
() автор топика
Ответ на: комментарий от madgnu

> \s+, не?

str_replace('ЭндНБСПточказапятая',",$text1_text2);

Не пашет. Значит полумеры. 99% что кодировка.

mobile
()
Ответ на: комментарий от mobile

Неа, всеравно не убирает... вообще если сравнить в лоб через strcmp

Текст1ЭндНБСПточказапятаяТекст2 и данные из базы «Текст1 Текст2»
или
Текст1 Текст2 и Текст1 Текст2

то они не равны, тоесть кодировка?

хотя в мускуле с кодировкой проблем нет?
http://faq4u.ru/images/probellllll.jpg

andry_mine
() автор топика
Ответ на: комментарий от andry_mine

Чудес не бывает. Нужно привести все к одной кодировке. Проверить Кодировку в таблице, кодировку в поле с текстом. Проверить что скрипт php сохранен в нужной кодировке. Сделать (если не прописано в настройках субд явно) при коннекте с базой

SET character_set_client = 'utf8' SET character_set_results = 'utf8' SET character_set_connection = 'utf8' SET NAMES 'utf8'

Не все это нужно, но мы ищем в чем проблема.

mobile
()
Ответ на: комментарий от KRoN73

&╤><

Он их прям в превью уже конвертит, вот свинство :}

Deleted
()
Ответ на: комментарий от KRoN73

В коде то как раз, вроде бы, экранируется. Просто оно при интерпретации его само преобразовывает. Было gt — интерпретировано как больше и при выводе в коде то gt (экранированный), но надо то было по задумке автора gt;gt;

Deleted
()
Ответ на: комментарий от andry_mine

>Хм... это хорошо :) мож мне че нить посоветуешь ?

Смотря где нужно. Можно str_replace(«\xA0», " ", $s); (или прямо ввести символ, хоть копипастом отсюда: « »).

Можно preg_match(«/blah[\s\xA0]+blah/», $s);...

и т.д.

KRoN73 ★★★★★
()
Ответ на: комментарий от andry_mine

>зы кодировки проверил mb_detect_encoding обе переменные в utf-8

Да, кодировки тут не при чём. Неразрывный пробел - совершенно законный символ, присутствующий по многих кодировках от cp1251 до utf8 :)

KRoN73 ★★★★★
()
Ответ на: комментарий от mobile

Ок, спасибо, вроде нашел тупку, скорее всего кодировка, так как запрос к базе был через mysql_querry а не через класс где как раз и указаны параметры кодировки...

andry_mine
() автор топика
Ответ на: комментарий от andry_mine

Значит, вставь копипастом (или по compose+space+space) символ напрямую. (Судя по всему str_replace не multibyte)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

Так я и не писал, что баг!

тест-&#0;-тест

KRoN73 ★★★★★
()
Ответ на: комментарий от boombick

Он терзает тех, кто отступает от правил пунктуации. )))

LamerOk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.