Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2013, 02:50   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию Разделение строк

Здравствуйте друзья.

PHP код:
foreach($file1 as &$r){
  
$r explode(":" ,$r);
  
    
$a "INSERT INTO email (mail, pass) VALUES ('{$r['0']}','{$r['1']}'); ";
    
$handle fopen($filename'a');
    if (
$mysqli->query($a)) {
        
$i++;
    }  else 
    {
        
fwrite($handle$a);
        
$error++;
    }
  } 

Появилась потребность в двух разделителях : и ;, а в моем скрипте можно использовать лишь один.
Пробовал разные варианты..
$r = explode(":" or ";" ,$r); и т.д.
но увы... ничего не получается...

Прошу у Вас о помощи с моей проблемой.
Jleksern вне форума Ответить с цитированием
Старый 31.08.2013, 03:06   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Вот, попробовал, у меня получилось так:

Код:
$str='a:b:c:d;i;f;g;h';
$arr1=explode(':',$str); // a | b | c | d;i;f;g;h
$arr2=explode(';',array_pop($arr1));
$arr3=array_merge($arr1, $arr2);
print_r($arr3);
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 31.08.2013, 03:06   #3
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

брутально, но просто:
PHP код:
$r explode(":" ,$r);
$r implode(";" ,$r);
$r explode(";" ,$r); 
для двух разделителей еще канает, хотя и некрасиво, но если нужен будет третий разделитель, то лучше использовать preg_split()

Последний раз редактировалось Mortimoro; 31.08.2013 в 03:15.
Mortimoro вне форума Ответить с цитированием
Старый 31.08.2013, 03:14   #4
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Отлично ребята.
Два варианта подходят.

Подскажите какой из этих вариантов будет выигрывать в скорости ?
Потому что файл текстовый может быть вплоть до одного гигабайта.
Jleksern вне форума Ответить с цитированием
Старый 31.08.2013, 03:15   #5
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Имхо, одинаково. Принцип один и тот же. Замерь скорость самостоятельно
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 31.08.2013, 03:17   #6
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

В скорости возможно будет выигрывать первый вариант, но если строка будет не
PHP код:
$str='a:b:c:d;i;f;g;h'
а допустим:
PHP код:
$str='a:b;c:d;i;f;g:h'
тебя ждет сюрприз

PS: нифига, мой вариант таки быстрее.

Последний раз редактировалось Mortimoro; 31.08.2013 в 03:21.
Mortimoro вне форума Ответить с цитированием
Старый 31.08.2013, 03:18   #7
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Да, если разделители будут чередоваться, то порядок элементов поменяется
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 31.08.2013, 03:29   #8
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Цитата:
Потому что файл текстовый может быть вплоть до одного гигабайта.
Такие объёмы нужно хранить в базе данных. Это же сколько нужно оперативки, чтобы выгрузить этот файл.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 31.08.2013, 03:41   #9
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

Цитата:
Сообщение от grominfo Посмотреть сообщение
Такие объёмы нужно хранить в базе данных. Это же сколько нужно оперативки, чтобы выгрузить этот файл.
Во-первых, база данных, как ни странно, хранит данные в файлах, а не в воздухе, потому формально не важно где хранить, важно то, что БД скорее всего более рационально их обработает, во-вторых, чтоб поместить данные в БД, надо таки разобрать файл - от этого никуда не денешься, в-третьих, файл можно считывать построчно если нужно сэкономить ресурсы.

В любом случае, для полного разбора придется увеличить время выполнения скрипта, либо обрабатывать файл частями. Сервер точно не обрадуется, если целиком весь файлик ему скормить.
Mortimoro вне форума Ответить с цитированием
Старый 31.08.2013, 03:48   #10
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Я подозреваю, что данный разбор этого файла будет происходить регулярно, поэтому и предложил изначально вписывать данные в базу, а не в файл, чтобы потом можно было удобно работать с ними. Как ни крути, но работа с таким объёмом данных требует участие mysql, как самое продвинутое решение в организации данных и их манипуляциями.

Цитата:
Во-первых, база данных, как ни странно, хранит данные в файлах, а не в воздухе, потому формально не важно где хранить, важно то, что БД скорее всего более рационально их обработает,
Формат базы данных специально разработан под быстрые и многочисленные операции над данными. Текстовой формат не позволяет этого делать.

Да что тут говорить, оперировать в оперативной памяти данными, размеров в 1 Гб - это садомазохизм. Смешно даже сравнивать преимущества базы данных над текстовым файлом...
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение строк в массив Abdukhafiz Microsoft Office Excel 2 19.04.2012 21:28
Разделение строк в StringGrid на группы Хохол Компоненты Delphi 6 21.03.2011 11:51
Разделение строк удовлетворяющих определенным условиям prettyfly Microsoft Office Excel 1 15.11.2010 16:52
Разделение. Maksim_27_10 Общие вопросы C/C++ 8 21.04.2010 20:40