За последние 24 часа нас посетили 18405 программистов и 1606 роботов. Сейчас ищут 1285 программистов ...

Недочет в построении файла .csv

Тема в разделе "PHP для новичков", создана пользователем Errrrorrrr, 18 мар 2017.

  1. Errrrorrrr

    Errrrorrrr Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    43
    Симпатии:
    0
    У меня стоит задача из базы с большим количеством записей, имеющих одно лишь поле составить файл .csv, просто одним столбцом. Задача вроде проста, но проблема в том, что большое количество записей не сохраняется. Проанализировав, я выяснил, что к этому числу относятся записи с пробелом, довольно логично, но как это переоформить сообразить не могу. Возможно и по другому критерию тоже не проходят. Записи сами по себе - строки, в которых могут содержать пробелы и некоторые символы: кодировка utf8_general_ci, тип varchar. Вот основные строчки кода:
    Код (Text):
    1. $query = "SELECT word FROM `second";
    2. $result = mysqli_query($db, $query);
    3.  
    4. while ($row = mysqli_fetch_assoc($result))
    5.    {    
    6.     $st = preg_replace ("/[^a-zA-ZА-Яа-я\s]/","",$row["word"]);
    7.       $csv_file .= '"'.$st."\r\n";
    8.    }
    Функция обработки строки (replace) особо не причем, хотя могу ошибаться, но без неё все равно половину записей съедается.
    Код (Text):
    1. $file_name = 'export.csv';
    2. $file = fopen($file_name,"w");
    3. fwrite($file,trim($csv_file));
    4. fclose($file);
    вот так сохраняется, возможно здесь что то не так.

    Прошу помочь с этим вопросом, заранее благодарен за помощь.

    P.S. Знаю, что задавать второй вопрос в одной теме не стоит, но этот вопрос не сильно в приоритете и не хочется флудить, поэтому все же если кто-то знает какую нибудь функцию или библиотеку, чтобы при выборке записей и заменить, например, ' на апострофы и подобное, то также буду благодарен за информацию.
     
  2. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
  3. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    2) htmlspecialchars+регулярка
    1) может \s причём?
     
  4. Errrrorrrr

    Errrrorrrr Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    43
    Симпатии:
    0
    Да, но я на локале делаю.
    --- Добавлено ---
    Спасибо. Насчет \s, что это? У меня тут только \r и \n, без которых по идеи вообще не будет работать.
     
  5. Errrrorrrr

    Errrrorrrr Новичок

    С нами с:
    28 июл 2016
    Сообщения:
    43
    Симпатии:
    0
    В общем я ещё проследил, может кто догадается в чем проблема, думаю для тех, кто знаком с подобным, задача должна быть проста и логичина. Получается все следующим образом: допустим есть записи note, note bene, notabilia. И почему то получается так что все они находятся в одной ячейке через перенос строки:
    nota bene
    notabilia
    Вот таким странным образом. Ещё есть запись a и a capella. И они тоже почему то в одну ячейку попадают
    a
    a capella
    Не могу понять в чем тут связь.
    Естественно в результате должны получиться 1 строка 1 записаь
    --- Добавлено ---
    В общем получается, что слова, которые одинаково начинаются заносятся в одну ячейку
    --- Добавлено ---
    Причем в абсолютно каждой ячейке по 2 записи.
     
  6. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @Errrrorrrr, тебе один раз это надо сделать? phpMyAdmin умеет сам экспортировать в csv
     
  7. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Errrrorrrr \s же пробел должен быть.