Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Разделение текстовой информации из файла и ее сопоставление
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (1): [1]   

> Без описания
UFO
Отправлено: 12 Января, 2010 - 20:04:25
Post Id



Full Member


Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005  

Карма 0




Привет всем!

Возник сложный вопрос для меня. Имеется .cvs файл, т.е. фактически .txt, в нем на каждой строке записана информация по одному объекту. Структура строки такова, что каждое новое описание объекта отделено от предыдущего запятой без пробелов с какой-либо стороны.
Что требуется. Разбить эти строки, используя разделитель запятую. Пытался сделать:

CODE:
$fila = file_get_contents("service.csv");
list ($obj,$id,$type,$date,$money,$cifra,$traff) = split ('[,]', $file);
echo $obj;


Но не выводит список.

Моя итоговая задача такая. Разбитые строчки по переменным вывести при поиске в виде таблички, соотнеся объекту. Искать следует только по объектам, параметры объекта ($id,$type,$date,$money,$cifra,$traff) в поиске не участвуют.

Поисковик у меня уже есть, вот он:

CODE:
<meta http-equiv="content-type" content="text/html; charset=Windows-1251">
<form action="<?php echo $_SERVER['PHP_SELF']; echo "?p=find"; ?>" method="POST" name="find">
<input type=text value="<? echo $slovo ?>" size="15" maxlength="68" name="slovo"><br>
<a href="index.php" onclick="document.find.submit(); return false">Поиск >>></a></form><br>
<?php
$slovo = $_POST['slovo'];
if (($act<>null) && ($slovo==null))
{
echo "Пустой запрос";
}
if (preg_match("#[^A-Za-z\-.*]#is",$slovo))
{
echo "Только: <font color=red>a-z</font>, точки и <font color=red>-</font>.</center>";
} else
if ($slovo<>null) {
if ((strlen($slovo)<2) or (strlen($slovo)>67)) {
echo "от двух до 67";
} else {
$out=array();
$slovo = str_replace('*', '\w', $slovo);
$fila = file_get_contents("service.csv");

if (preg_match_all("/\\b(\\S*$slovo\\S*)\\b/i", $fila, $out, PREG_PATTERN_ORDER))
{
echo "<TABLE cellpadding=10 cellspacing=10><tr><td bgcolor=#E8EFF9>";
echo implode('</td></tr><TR><td bgcolor=#E8EFF9>', $out[1]);
echo "</table>";
}
else
{
echo 'ничего не нашел';
}
}
};
?>


Таким образом, помогите, ребят, сопоставить существующий рабочий поисковик и код.
Т.е. надо искать по $obj и выводить как-то:

CODE:
echo "<td>$obj</td> <td>$id</td> <td>$type</td> ... ";


Но ничего не перепутать Улыбка
И первую строку надо каким-то образом не учитывать или затереть сразу (??), можно в принципе посчитать строки и в цикле делать.
Файл большой - около 350 тыс. строк (ага Улыбка ), но сервер справится, я уже все проверил Подмигивание

Спасибо всем, кто откликнется Хорошо
 
 Top
Furax
Отправлено: 13 Января, 2010 - 05:48:25
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




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

Первое, что идёт в голову:
CODE:
$word = strtr(preg_quote($_POST['word'], '/'), array('\*' => '\w', ',' => ''); //Слово, которое надо найти; уже обезопасенное на предмет спецсимволов и т. п.
$regexp = "/^$word,/"; //Регулярное выражение

$file = fopen("service.csv");
fgets($file);//Пропустили первую строку
while ($line = fgets($file)) //Чтение всех строк; если в файле окажется пустая строка - оборвётся на ней
if (preg_match($regexp, $line, $matches))
echo "Найдено: $matches[0]<br>";
 
 Top
UFO
Отправлено: 14 Января, 2010 - 20:22:03
Post Id



Full Member


Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005  

Карма 0




Спасибо, буду пробовать Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0374]     [ Gzipped ]