Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблема с кавычками
 
 автор: Crux   (25.09.2004 в 21:28)   письмо автору
 
 

есть Exel фаил с разрешением .CSV, моя задача перекинуть данные из этого файла в базу данных MySQL.
програмку я написал, работает всё замечательно, кроме одной маленькой неприятной вещи.
когда в Exel ячейки встречается двойная ковычка, то в БД происходит запись с ещё несколько добавленных ковычек.
например:
ячейка со строкой: (15" Монитор), запишется в таком виде("15"" Монитор")
вопрос: как от этого избавиться?

   
 
 автор: cheops   (25.09.2004 в 22:31)   письмо автору
 
   для: Crux   (25.09.2004 в 21:28)
 

На каком этапе происходит подмена кавычек двойными? До внесения в базу данных или после? В любом случае это просто устранить при помощи функции str_replace(), заменив две подряд идущие кавычки одной:
<?php
  $str 
'15"" Монитор';
  
$str str_replace('""','"',$str);
?>

   
 
 автор: elenaki   (26.09.2004 в 15:38)
 
   для: cheops   (25.09.2004 в 22:31)
 

просто надо писать 15'' (две одинарных кавычки, а не одна двойная)
у меня точно так же написано и все работает.

   
 
 автор: Crux   (26.09.2004 в 17:54)   письмо автору
 
   для: elenaki   (26.09.2004 в 15:38)
 

ковычки появляются, когда происходит считывание из файла.
хотелось бы устранить проблему именно на этом уровне выполнения скрипта.
str_replace для этого не подходит

   
 
 автор: cheops   (26.09.2004 в 18:07)   письмо автору
 
   для: Crux   (26.09.2004 в 17:54)
 

А каким образом файл разбирается, при помощи функции fgetcsv() или самопальным скриптом? Нужно чуть больше информации, чтобы обойти проблему, а ещё лучше кусок кода.

   
 
 автор: Crux   (26.09.2004 в 19:00)   письмо автору
 
   для: cheops   (26.09.2004 в 18:07)
 

Получаю содержимое файла в виде массива

$data = File("mon.csv");

   
 
 автор: cheops   (26.09.2004 в 19:24)   письмо автору
 
   для: Crux   (26.09.2004 в 19:00)
 

А строки в массиве чем разбиваются, explode() или strtok()? Или в файле только один столбец?

   
 
 автор: Crux   (26.09.2004 в 19:50)   письмо автору
 
   для: cheops   (26.09.2004 в 19:24)
 

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

P.S. кстате, вопрос на засыпку, как правильно "кавычки" или "ковычки"

   
 
 автор: cheops   (26.09.2004 в 20:08)   письмо автору
 
   для: Crux   (26.09.2004 в 19:50)
 

Попытался сейчас воспроизвести ситуацию - это Excel сохраняет так текстовые переменные. Я вспомнил так и должно быть - это проделки VB - там экранирование не по людски сделано - кавычки экранируется двойным символом, а так как из ёкселевского файла в другие форматы преобразование осуществляется при его помощи - бесполезно менять формат - он даже в текстовом виде так сохраняет. Поэтому без замены str_replace() или наборе одинарными кавычками, как предлагает elenaki здесь сделать будет что-то сложно.

PS Word и Lingvo единодушно за "кавычки" :)))

   
 
 автор: Crux   (26.09.2004 в 20:21)   письмо автору
 
   для: cheops   (26.09.2004 в 20:08)
 

Бррр....
точно, а я просмотреть фаил в текстовом виде и не сообразил.
пора барать отпуск, голова уже не фурычет:))

сасибо за помощь!

кАвычки mustdie

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования