PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Не происходит замена значения
Поиск в теме | Версия для печати
undex
Отправлено: 08 Августа, 2016 - 16:13:58
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2014
Откуда: берутся дети?
Помог: 0 раз(а)
Вообщем дело вот в чем, нужно спарсить csv файл и прочитать "шапку" таблицы, затем перевести шапку с украинского языка в английский транслит для заноса в базу mysql
делаю это через функцию str_replace();
Вот так:
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
//тут идет начало цикла парсинга по строкам
$replace = array ( iconv ( 'UTF-8' , 'windows-1251' , "Філія" ) , iconv ( 'UTF-8' , 'windows-1251' , "Підрозділ" ) , iconv ( 'UTF-8' , 'windows-1251' , "Найменування" ) , iconv ( 'UTF-8' , 'windows-1251' , "Статус" ) , iconv ( 'UTF-8' , 'windows-1251' , "Індекс" ) , iconv ( 'UTF-8' , 'windows-1251' , "Хост" ) , iconv ( 'UTF-8' , 'windows-1251' , "Вин.модуль" ) , iconv ( 'UTF-8' , 'windows-1251' , "Тип" ) , iconv ( 'UTF-8' , 'windows-1251' , "Клас" ) , iconv ( 'UTF-8' , 'windows-1251' , "Аналогові" ) , iconv ( 'UTF-8' , 'windows-1251' , "ПЗ" ) , iconv ( 'UTF-8' , 'windows-1251' , "Мережа" ) , iconv ( 'UTF-8' , 'windows-1251' , "Відомчі" ) , iconv ( 'UTF-8' , 'windows-1251' , "Обл.центр" ) , iconv ( 'UTF-8' , 'windows-1251' , "Власник" ) , iconv ( 'UTF-8' , 'windows-1251' , "Монт.ємн." ) , iconv ( 'UTF-8' , 'windows-1251' , "Мон.інд." ) , iconv ( 'UTF-8' , 'windows-1251' , "Монт.спар." ) , iconv ( 'UTF-8' , 'windows-1251' , "Монт.такс." ) , iconv ( 'UTF-8' , 'windows-1251' , "Мон.АВН" ) , iconv ( 'UTF-8' , 'windows-1251' , "Монт.АМТС" ) , iconv ( 'UTF-8' , 'windows-1251' , "Монт.АПОР" ) , iconv ( 'UTF-8' , 'windows-1251' , "Монт.ємн.поч." ) , iconv ( 'UTF-8' , 'windows-1251' , "Монт.Е1" ) , iconv ( 'UTF-8' , 'windows-1251' , "Змін.ємн." ) , iconv ( 'UTF-8' , 'windows-1251' , "Дата змін монт.ємн." ) , iconv ( 'UTF-8' , 'windows-1251' , "ЗЛ вих." ) , iconv ( 'UTF-8' , 'windows-1251' , "ЗЛ вхід." ) , iconv ( 'UTF-8' , 'windows-1251' , "ЗЛ двох." ) , iconv ( 'UTF-8' , 'windows-1251' , "Спец.компл." ) , iconv ( 'UTF-8' , 'windows-1251' , "Зад.ємн. To 19" ) , iconv ( 'UTF-8' , 'windows-1251' , "E1 зад." ) , iconv ( 'UTF-8' , 'windows-1251' , "АПОР" ) , iconv ( 'UTF-8' , 'windows-1251' , "АВН система" ) , iconv ( 'UTF-8' , 'windows-1251' , "АВН тип" ) , iconv ( 'UTF-8' , 'windows-1251' , "Автовідповідач" ) , iconv ( 'UTF-8' , 'windows-1251' , "Персонал" ) , iconv ( 'UTF-8' , 'windows-1251' , "Дата виробництва" ) , iconv ( 'UTF-8' , 'windows-1251' , "Дата вед.експл." ) , iconv ( 'UTF-8' , 'windows-1251' , "Дата гарант.ПЗ" ) , iconv ( 'UTF-8' , 'windows-1251' , "Дата гарант.АЧ" ) , iconv ( 'UTF-8' , 'windows-1251' , "Виробник" ) , iconv ( 'UTF-8' , 'windows-1251' , "Схема" ) , iconv ( 'UTF-8' , 'windows-1251' , "Інв.номер" ) , iconv ( 'UTF-8' , 'windows-1251' , "Примітка" ) , iconv ( 'UTF-8' , 'windows-1251' , "Адреса" ) , iconv ( 'UTF-8' , 'windows-1251' , "Дата редагування" ) ) ;
$to = array ( "Filiya" , "Pidrozdil" , "Naymenuvannya" , "Status" , "Indeks" , "ost" , "Vyn_modul" , "Typ" , "Klas" , "Analohovi" , "PZ" , "Merezha" , "Vidomchi_V" , "Obl_tsentr" , "Vlasnyk" , "Mont_yemn" , "Mon_ind" , "Mont_spar" , "Mont_taks" , "Mon_AVN" , "Mont_AMT" , "Mont_APOR" , "Mont_yemn_poch" , "Mont_E1" , "Zmin_yemn" , "Data_zmin_mont_yemn" , "ZL_vy" , "ZL_vid" , "ZL_dvo" , "Spets_kompl" , "Zad_yemn" , "E1_zad" , "APOR" , "AVN_systema" , "AVN_typ" , "Avtovidpovidach" , "Personal" , "Data_vyrobnytstva" , "Data_ved_ekspl" , "Data_garant_PZ" , "Data_harant_ACh" , "Vyrobnyk" , "Sema" , "Inv_nomer" , "Prymitka" , "Adresa" , "Data_redahuvannya" ) ; // Тут второй цикл для парсинга самой строкки
// Ну далее как бы занос в базу но я для отладки вывожу все в табличном варианте
$show = $value [ $i ] ;
if ( $i == $count ) {
if ( $row == 0 ) {
//$show = str_replace($replace,$to,$show);
$text .= '<th>' . $show . '</th></tr>' ;
} else {
$text .= '<td>' . $show . '</td></tr>' ;
}
} elseif ( $i == 0) {
if ( $row == 0) {
$text .= '<tr><th>' . $show . '</th>' ;
} else {
$text .= '<tr><td>' . $show . '</td>' ;
}
} else {
if ( $row == 0) {
$text .= '<th>' . $show . '</th>' ;
} else {
$text .= '<td>' . $show . '</td>' ;
}
}
// тут всякая муть ввиде переменных счетчиков цикла
//А тут вывод
echo $text ;
В итоге в шапке таблицы не перевелось в транслит "Дата гарант.PZ X" вернее перевелось но не корректно, подскажите как быть?
andrewkard
Отправлено: 09 Августа, 2016 - 00:24:23
Участник
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Помог: 30 раз(а)
undex пишет: затем перевести шапку с украинского языка в английский транслит для заноса в базу mysql
зачем?
Fart
Отправлено: 09 Августа, 2016 - 01:14:26
Посетитель
Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016
Помог: 10 раз(а)
попробуй так:
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?
"Філія" , "Підрозділ" , "Найменування" , "Статус" , "Індекс" , "Хост" , "Вин.модуль" , "Тип" , "Клас" ,
"Аналогові" , "ПЗ" , "Мережа" , "Відомчі" , "Обл.центр" , "Власник" , "Монт.ємн." , "Мон.інд." , "Монт.спар." , "Монт.такс." , "Мон.АВН" , "Монт.АМТС" , "Монт.АПОР" , "Монт.ємн.поч." , "Монт.Е1" , "Змін.ємн." , "Дата змін монт.ємн." , "ЗЛ вих." , "ЗЛ вхід." , "ЗЛ двох." , "Спец.компл." , "Зад.ємн. To 19" , "E1 зад." , "АПОР" , "АВН система" , "АВН тип" , "Автовідповідач" , "Персонал" , "Дата виробництва" , "Дата вед.експл." , "Дата гарант.ПЗ" , "Дата гарант.АЧ" , "Виробник" , "Схема" , "Інв.номер" , "Примітка" , "Адреса" , "Дата редагування" ) ;
function translit( $str )
{
'А' , 'Б' , 'В' , 'Г' , 'Ґ' , 'Д' , 'Е' , 'Є' , 'Ж' , 'З' , 'И' , 'І' , 'Ї' , 'Й' ,
'К' , 'Л' , 'М' , 'Н' , 'О' , 'П' , 'Р' , 'С' , 'Т' , 'У' , 'Ф' , 'Х' , 'Ц' , 'Ч' ,
'Ш' , 'Щ' , 'Ь' , 'Ю' , 'Я' , 'а' , 'б' , 'в' , 'г' , 'ґ' , 'д' , 'е' ,
'є' , 'ж' , 'з' , 'и' , 'i' , 'ї' , 'й' , 'к' , 'л' , 'м' , 'н' , 'о' , 'п' ,
'р' , 'с' , 'т' , 'у' , 'ф' , 'х' , 'ц' , 'ч' , 'ш' , 'щ' , 'ь' , 'ю' , 'я' ) ;
'A' , 'B' , 'V' , 'H' , 'G' , 'D' , 'E' , 'Ie' , 'Zh' , 'Z' , 'Y' , 'I' , 'I' , 'I' ,
'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'R' , 'S' , 'T' , 'U' , 'F' , 'Kh' , 'Ts' , 'Ch' ,
'Sh' , 'Sch' , '' , 'Yu' , 'Ya' , 'a' , 'b' , 'v' , 'h' , 'g' , 'd' , 'e' ,
'ie' , 'zh' , 'z' , 'y' , 'i' , 'i' , 'i' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'r' ,
's' , 't' , 'u' , 'f' , 'kh' , 'ts' , 'ch' , 'sh' , 'sch' , '' , 'yu' , 'ya' ) ;
// либо return str_replace($ua, $lat, iconv('UTF-8', 'windows-1251', $str));
}
//выводим транслит ua->lat
foreach ( $str as $key => $s )
{
echo "Key:" . $key . ";---UA: " . $s . ";---LAT: " . translit( $str [ $key ] ) . "<br />" ;
}
?>
теперь не придется искать какое то слово, а лишь замени те символы транслита, которые тебе нужно.
после транслита делай ту выборку, что тебе необходима. ключи согласно массиву от 0 до 46.(Отредактировано автором: 09 Августа, 2016 - 01:20:05)
undex
Отправлено: 09 Августа, 2016 - 08:02:10
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2014
Откуда: берутся дети?
Помог: 0 раз(а)
Fart пишет: попробуй так:
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?
"Філія" , "Підрозділ" , "Найменування" , "Статус" , "Індекс" , "Хост" , "Вин.модуль" , "Тип" , "Клас" ,
"Аналогові" , "ПЗ" , "Мережа" , "Відомчі" , "Обл.центр" , "Власник" , "Монт.ємн." , "Мон.інд." , "Монт.спар." , "Монт.такс." , "Мон.АВН" , "Монт.АМТС" , "Монт.АПОР" , "Монт.ємн.поч." , "Монт.Е1" , "Змін.ємн." , "Дата змін монт.ємн." , "ЗЛ вих." , "ЗЛ вхід." , "ЗЛ двох." , "Спец.компл." , "Зад.ємн. To 19" , "E1 зад." , "АПОР" , "АВН система" , "АВН тип" , "Автовідповідач" , "Персонал" , "Дата виробництва" , "Дата вед.експл." , "Дата гарант.ПЗ" , "Дата гарант.АЧ" , "Виробник" , "Схема" , "Інв.номер" , "Примітка" , "Адреса" , "Дата редагування" ) ;
function translit( $str )
{
'А' , 'Б' , 'В' , 'Г' , 'Ґ' , 'Д' , 'Е' , 'Є' , 'Ж' , 'З' , 'И' , 'І' , 'Ї' , 'Й' ,
'К' , 'Л' , 'М' , 'Н' , 'О' , 'П' , 'Р' , 'С' , 'Т' , 'У' , 'Ф' , 'Х' , 'Ц' , 'Ч' ,
'Ш' , 'Щ' , 'Ь' , 'Ю' , 'Я' , 'а' , 'б' , 'в' , 'г' , 'ґ' , 'д' , 'е' ,
'є' , 'ж' , 'з' , 'и' , 'i' , 'ї' , 'й' , 'к' , 'л' , 'м' , 'н' , 'о' , 'п' ,
'р' , 'с' , 'т' , 'у' , 'ф' , 'х' , 'ц' , 'ч' , 'ш' , 'щ' , 'ь' , 'ю' , 'я' ) ;
'A' , 'B' , 'V' , 'H' , 'G' , 'D' , 'E' , 'Ie' , 'Zh' , 'Z' , 'Y' , 'I' , 'I' , 'I' ,
'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'R' , 'S' , 'T' , 'U' , 'F' , 'Kh' , 'Ts' , 'Ch' ,
'Sh' , 'Sch' , '' , 'Yu' , 'Ya' , 'a' , 'b' , 'v' , 'h' , 'g' , 'd' , 'e' ,
'ie' , 'zh' , 'z' , 'y' , 'i' , 'i' , 'i' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'r' ,
's' , 't' , 'u' , 'f' , 'kh' , 'ts' , 'ch' , 'sh' , 'sch' , '' , 'yu' , 'ya' ) ;
// либо return str_replace($ua, $lat, iconv('UTF-8', 'windows-1251', $str));
}
//выводим транслит ua->lat
foreach ( $str as $key => $s )
{
echo "Key:" . $key . ";---UA: " . $s . ";---LAT: " . translit( $str [ $key ] ) . "<br />" ;
}
?>
теперь не придется искать какое то слово, а лишь замени те символы транслита, которые тебе нужно.
после транслита делай ту выборку, что тебе необходима. ключи согласно массиву от 0 до 46.
Благодарю, не додумался по буквам транслитить. Сейчас попробую реализовать еще после вашего примера замену пробелов и точек на "_" и буду пытатся внести в базу
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB