За последние 24 часа нас посетили 22366 программистов и 1028 роботов. Сейчас ищут 749 программистов ...

Создание CSV файла в кодировке UTF-8

Тема в разделе "PHP для новичков", создана пользователем SerfUA, 10 ноя 2014.

  1. SerfUA

    SerfUA Активный пользователь

    С нами с:
    18 фев 2014
    Сообщения:
    75
    Симпатии:
    4
    Всем доброго времени суток.
    У мене не давно возникла проблема с кодировкой создаваемого автоматически CSV файла. Изменить кодировку документа я могу через редактор например NotеPad++, но согласитесь это очень тупо и не комфортно всегда заходить и редактировать новый файл.
    Скажу сразу я этот код не сам писал, а позаимствовал из какогото сайта.
    Код (Text):
    1.  
    2. class CSV {
    3.     private $_csv_file = null;
    4.     /**
    5.      * @param string $csv_file  - путь до csv-файла
    6.      */
    7.     public function __construct($csv_file) {
    8.         if (file_exists($csv_file)) {               //Если файл существует
    9.        
    10.             $this->_csv_file = $csv_file; //Записываем путь к файлу в переменную
    11.         }
    12.         else { //Если файл не найден то вызываем исключение
    13.             $str = '';
    14.             file_put_contents($csv_file, $str);
    15.             throw new Exception("Файл ".$csv_file." не було знайдено, но він був створений");
    16.         }
    17.     }
    18.     public function setCSV(Array $csv) {
    19.         //Открываем csv для до-записи,
    20.         //если указать w, то  ифнормация которая была в csv будет затерта
    21.         $handle = fopen($this->_csv_file, "a");
    22.  
    23.         foreach ($csv as $value) { //Проходим массив
    24.             //Записываем, 3-ий параметр - разделитель поля
    25.             fputcsv($handle, explode(";", $value), ";");
    26.         }
    27.         fclose($handle); //Закрываем
    28.     }
    29.     /**
    30.      * Метод для чтения из csv-файла. Возвращает массив с данными из csv
    31.      * @return array;
    32.      */
    33.     public function getCSV() {
    34.         $handle = fopen($this->_csv_file, "r"); //Открываем csv для чтения
    35.  
    36.         $array_line_full = array(); //Массив будет хранить данные из csv
    37.         //Проходим весь csv-файл, и читаем построчно. 3-ий параметр разделитель поля
    38.         while (($line = fgetcsv($handle, 0, ";")) !== FALSE) {
    39.             $array_line_full[] = $line; //Записываем строчки в массив
    40.         }
    41.         fclose($handle); //Закрываем файл
    42.         return $array_line_full; //Возвращаем прочтенные данные
    43.     }
    44. }
    45. try {
    46.     $csv = new CSV("ox2.csv"); //Открываем наш csv
    47.     /**
    48.      * Чтение из CSV  (и вывод на экран в красивом виде)
    49.      */
    50.     echo "<h2>CSV до записи:</h2>";
    51.     $get_csv = $csv->getCSV();
    52.     foreach ($get_csv as $value) { //Проходим по строкам
    53.         for($i=0;$i<count($value);$i++){
    54.             echo "Значення $i " . $value[$i] . "<br>";
    55.         }
    56.     }
    57.  
    58.     /**
    59.      * Запись новой информации в CSV
    60.      */
    61.     $arr = array("Значення 1;Значення 2;Значення 3",
    62.         "Значення 1;Значення 2;Значення 3");
    63.     $csv->setCSV($arr);
    64. }
    65. catch (Exception $e) { //Если csv файл не существует, выводим сообщение
    66.     echo "Ошибка: " . $e->getMessage();
    67. }
    Поэтому хотелось бы доделать и пользоваться удобным и качественным кодом. Но какая функция это делает я пока не нашел поэтому если это реально, подкиньте пожалуйста ссылку или название функции и я дальше сам разберусь заранее спасибо.
     
  2. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Вот php.net/manual/ru/function.mb-internal-encoding.php
     
  3. SerfUA

    SerfUA Активный пользователь

    С нами с:
    18 фев 2014
    Сообщения:
    75
    Симпатии:
    4
    Re: Создание CSV файла в кодировке UTF-8(ТЕМА ЗАКРЫТА)

    Большое спасибо за подсказку.