[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Excel parser и проблема с запросом
Shyrick
Всех приветствую! Такая проблема: импортирую парсером в таблицу данные из ехселя. Он выбирает и заносит в таблицу данные ввиде &#1055&#1054 причем выбираются данные нормально и правильно отображаются. Но когда выполняю запрос, к примеру ...WHERE spec='ПО' ничего не выдает, т.е. запрос не проходит, а когдаже ...WHERE spec='&#1055&#1054' то выборка происходит. Что подскажете, как выбирать ведь условие находится в переменной ввиде ПО а не &#1055&#1054
Заранее оговорюсь, кодировка настроена вродебы правильно, пользователь не root
Заранее всем благодарен



Спустя 1 час, 46 минут, 24 секунды (12.05.2009 - 20:12) Shyrick написал(а):
Проблему решил сам =)
написал вот такую функцию
PHP
#кодировка
function code($string)
{
$string ereg_replace("а","&#1072",$string);
$string ereg_replace("б","&#1073",$string);
$string ereg_replace("в","&#1074",$string);
$string ereg_replace("г","&#1075",$string);
$string ereg_replace("д","&#1076",$string);
$string ereg_replace("е","&#1077",$string);
$string ereg_replace("ё","&#1105",$string);
$string ereg_replace("ж","&#1078",$string);
$string ereg_replace("з","&#1079",$string);
$string ereg_replace("и","&#1080",$string);
$string ereg_replace("к","&#1082",$string);
$string ereg_replace("л","&#1083",$string);
$string ereg_replace("м","&#1084",$string);
$string ereg_replace("н","&#1085",$string);
$string ereg_replace("о","&#1086",$string);
$string ereg_replace("п","&#1087",$string);
$string ereg_replace("р","&#1088",$string);
$string ereg_replace("с","&#1089",$string);
$string ereg_replace("т","&#1090",$string);
$string ereg_replace("у","&#1091",$string);
$string ereg_replace("ф","&#1092",$string);
$string ereg_replace("х","&#1093",$string);
$string ereg_replace("ц","&#1094",$string);
$string ereg_replace("ч","&#1095",$string);
$string ereg_replace("ш","&#1096",$string);
$string ereg_replace("щ","&#1097",$string);
$string ereg_replace("ъ","&#1098",$string);
$string ereg_replace("ы","&#1099",$string);
$string ereg_replace("ь","&#1100",$string);
$string ereg_replace("э","&#1101",$string);
$string ereg_replace("ю","&#1102",$string);
$string ereg_replace("я","&#1103",$string);
$string ereg_replace("й","&#1184",$string);
$string ereg_replace("Ё","&#1025",$string);
$string ereg_replace("Й","&#1049",$string);
$string ereg_replace("Ю","&#1070",$string);
$string ereg_replace("Ч","&#1063",$string);
$string ereg_replace("Ь","&#1068",$string);
$string ereg_replace("Щ","&#1065",$string);
$string ereg_replace("Ц","&#1062",$string);
$string ereg_replace("У","&#1059",$string);
$string ereg_replace("К","&#1050",$string);
$string ereg_replace("Е","&#1045",$string);
$string ereg_replace("Н","&#1053",$string);
$string ereg_replace("Г","&#1043",$string);
$string ereg_replace("Ш","&#1064",$string);
$string ereg_replace("З","&#1047",$string);
$string ereg_replace("Х","&#1061",$string);
$string ereg_replace("Ъ","&#1066",$string);
$string ereg_replace("Ф","&#1060",$string);
$string ereg_replace("Ы","&#1067",$string);
$string ereg_replace("В","&#1042",$string);
$string ereg_replace("А","&#1040",$string);
$string ereg_replace("П","&#1055",$string);
$string ereg_replace("Р","&#1056",$string);
$string ereg_replace("О","&#1054",$string);
$string ereg_replace("Л","&#1051",$string);
$string ereg_replace("Д","&#1044",$string);
$string ereg_replace("Ж","&#1046",$string);
$string ereg_replace("Э","&#1069",$string);
$string ereg_replace("Я","&#1070",$string);
$string ereg_replace("С","&#1057",$string);
$string ereg_replace("М","&#1052",$string);
$string ereg_replace("И","&#1048",$string);
$string ereg_replace("Т","&#1058",$string);
$string ereg_replace("Б","&#1041",$string);
return 
$string;
}

Если кому интересно раскажу подробнее

Спустя 9 часов, 21 минута, 38 секунд (13.05.2009 - 05:34) kirik написал(а):
Цитата (Shyrick @ 12.05.2009 - 12:12)
Если кому интересно раскажу подробнее

Куда уж более подробно? smile.gif

А вот так не работает?
PHP
echo mb_convert_encoding('аг''UTF-8''HTML-ENTITIES');

Спустя 4 часа, 58 минут, 45 секунд (13.05.2009 - 10:33) Shyrick написал(а):
Цитата (kirik @ 13.05.2009 - 02:34)
А вот так не работает?
PHP
echo mb_convert_encoding('аг', 'UTF-8', 'HTML-ENTITIES');

К сожалению не работает. Вместо ПО выводит ГЏГЋ и запрос с таким параметром не проходит.

Спустя 1 час, 1 минута, 13 секунд (13.05.2009 - 11:34) poli-smen написал(а):
Цитата
Проблему решил сам =)
написал вот такую функцию

Помоему здесь лучше использовать функцию strtr.
1)
PHP
echo code('&#1055&#1054').'<br>'// используя твою функцию

2)
PHP
echo strtr('&#1055&#1054'$table).'<br>'// используя функцию strtr и переменную-массив $table

Эти две команды выведут одно и тоже.

Естественно переменную $table нужно создать ДО вызова strtr. Её определение может быть таким:
PHP
$table = array(
"а" => "&#1072",
"б" => "&#1073",
"в" => "&#1074",
"г" => "&#1075",
"д" => "&#1076",
"е" => "&#1077",
"ё" => "&#1105",
"ж" => "&#1078",
"з" => "&#1079",
"и" => "&#1080",
"к" => "&#1082",
"л" => "&#1083",
"м" => "&#1084",
"н" => "&#1085",
"о" => "&#1086",
"п" => "&#1087",
"р" => "&#1088",
"с" => "&#1089",
"т" => "&#1090",
"у" => "&#1091",
"ф" => "&#1092",
"х" => "&#1093",
"ц" => "&#1094",
"ч" => "&#1095",
"ш" => "&#1096",
"щ" => "&#1097",
"ъ" => "&#1098",
"ы" => "&#1099",
"ь" => "&#1100",
"э" => "&#1101",
"ю" => "&#1102",
"я" => "&#1103",
"й" => "&#1184",
"Ё" => "&#1025",
"Й" => "&#1049",
"Ю" => "&#1070",
"Ч" => "&#1063",
"Ь" => "&#1068",
"Щ" => "&#1065",
"Ц" => "&#1062",
"У" => "&#1059",
"К" => "&#1050",
"Е" => "&#1045",
"Н" => "&#1053",
"Г" => "&#1043",
"Ш" => "&#1064",
"З" => "&#1047",
"Х" => "&#1061",
"Ъ" => "&#1066",
"Ф" => "&#1060",
"Ы" => "&#1067",
"В" => "&#1042",
"А" => "&#1040",
"П" => "&#1055",
"Р" => "&#1056",
"О" => "&#1054",
"Л" => "&#1051",
"Д" => "&#1044",
"Ж" => "&#1046",
"Э" => "&#1069",
"Я" => "&#1070",
"С" => "&#1057",
"М" => "&#1052",
"И" => "&#1048",
"Т" => "&#1058",
"Б" => "&#1041"
);


ps. а вообще, лучше чтонибудь придумать, чтобы в таблицу писалась не чепуха вида "&#1055&#1054", а нормальные русские буквы...

Спустя 10 часов, 47 минут, 26 секунд (13.05.2009 - 22:22) Shyrick написал(а):
Цитата (poli-smen @ 13.05.2009 - 08:34)
а вообще, лучше чтонибудь придумать, чтобы в таблицу писалась не чепуха вида "&#1055&#1054", а нормальные русские буквы...

Хм вот в том то и проблема... Приведу пример
PHP
echo "<br>ПО".get($ws,$exc);

вот этот кусочек выведет <br>ПО&#1055&#1054. Т.е. то что выдирает парсер из ячейки заносится как я думаю ввиде кода а не букв. Но тогда странность: почему браузер нормально воспринимает... Я применял все функции перевода кодировки, которые знаю и которые в инете нарыл, не помогло, а потом догнал переводить параметр запроса в коды и вроде работает =)
P.S. можно попробовать конечно наоборот переврдить коды в буквы при вставке в базу, но пока багов не обнаружено пробовать не буду

Спустя 9 часов, 6 минут, 55 секунд (14.05.2009 - 07:28) kirik написал(а):
Я не пойму, почему там точки с запятой на конце нигде нет?

Спустя 7 часов, 3 минуты, 46 секунд (14.05.2009 - 14:32) Oyeme написал(а):
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "UTF-8");
iconv_set_encoding("input_encoding", "UTF-8");

$data = new Spreadsheet_Excel_Reader(); //start parsing
$data->setUTFEncoder('iconv');
$data->setOutputEncoding('UTF-8');

smile.gif
Быстрый ответ:

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