[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбивка строк текста на переменные
Дух системы
Здраствуйте.
Помогите пожалуйста советом, а если есть время примером.

есть текст в переменной $text


20100417132912 any1
20100417122941 any2
20100417041627 any3
20100417041259 any4


необходимо этот текст разделить на две части для каждой из строк
$part1="20100417132912";
$part2="any1";

чтобы было возможно после все эти строки поочередно занести в mysql
в виде

INSERT INTO table (date, log) values ($part1, $part2);

для каждой из строк.



Спустя 13 минут, 14 секунд (18.04.2010 - 20:10) waldicom написал(а):
если строки разделяются пробелом и больше пробелов в строке нет, то можно использовать функцию explode()

list($date, $log) = explode(" ", $inputString);
INSERT INTO table (date, log) values ($date, $log);

Спустя 2 часа, 21 минута, 13 секунд (18.04.2010 - 22:31) Дух системы написал(а):
waldicom, к сожалению не пробелом. а
"
" переходом на след строку.

немного поэкспериментировав с preg_replace
добился превращения
20100417132912	any1
20100417122941 any2
20100417041627 any3
20100417041259 any4

в
INSERT INTO table (date, log) values (20100417132912, any1
INSERT INTO table (date, log) values (20100417122941, any2
INSERT INTO table (date, log) values (20100417041627, any3
INSERT INTO table (date, log) values (20100417041259, any4


теперь вот не понимаю как теперь завернуть каждую строку в переменную $test
чтобы получилось на тип:

mysql_query("$test)");

Спустя 1 час, 19 минут, 28 секунд (18.04.2010 - 23:51) waldicom написал(а):
Насчет пробела: значения все-таки разделяются пробелом?
Откуда читаются строки? С файла?
Даже если преобразовать все в одну переменную, то mysql_query() не может выполнять множественные запросы.

Из всего этого следует:
вариант 1: последовательно читаем строки. Как прочитали строку, делаем explode, потом формируем запрос, затем выполняем запрос.
вариант 2: последовательно читаем строки. Формируем строки типа ($date,$log), конкатенируем их все в строку вида
INSERT INTO `table` (`date_`, `log`)
($date, $log),
($date, $log),
($date, $log),
($date, $log),
($date, $log)
выполняем запрос.
При втором варианте теоретически можно сделать слишком большой запрос и сервер его не отработает.

Читать строки можно как из файла, так и из массива.

Спустя 7 часов, 41 секунда (19.04.2010 - 06:51) antonov_sa написал(а):
собрать все данные в ассоциативный массив и в цикле добавить в базу инфу..

Спустя 6 часов, 10 минут, 28 секунд (19.04.2010 - 13:02) Guest написал(а):
waldicom, с explode получилось

с первого раза просто не понял smile.gif
$utffile=preg_replace('"	"','|',$utffile); // Готовим массив для explode

просто в any возможно появится когда-либо пробел

for($i=0; $i<=$maxlines; $i++)	// от нулевой строки, до указанной $maxlines
{
list($date, $char_name) = explode("|",trim($topdata[$i])); // Преобразуем массив в переменные
echo "<br>";
echo "INSERT INTO `l2top_temp` VALUES ('$date', '$char_name')"; //Выводим SQL запросы
mysql_query("INSERT INTO `l2top_temp` VALUES ('$date', '$char_name')"); //обращаемся к SQL
}


все прошло на ура.

Спасибо большое.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.