Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Построчное чтение файла - как перескакивать строки?
 
 автор: Qiao   (26.01.2008 в 22:14)   письмо автору
 
 

Считываю файл построчно, строки заносятся в базу.

Каждая третья строка проверяется на условие (существование в базе). Если оно выполянется, то требуется перейти к следующей третьей строке (т.е. перепрыгнуть две строки).

Подскажите как это можно осуществить.

<?php i 0
while ($line=fgets($dict)) {
    
$i++;
    switch (
$i)
    {
        case 
1:
        if (
check($line)) ????????????? else ?????????????
        
$insert1 $line;
        break;

        case 
2:
        
$insert2 $line;
        break;

        case 
3:
        
$insert3 $line;
        
add($insert1,$insert2,$insert3);
        
$i 0;
        break;
    }
}
?>

   
 
 автор: AVS   (26.01.2008 в 22:23)   письмо автору
 
   для: Qiao   (26.01.2008 в 22:14)
 

А если не выполняется? Какие строки заносить в базу? В какой последовательности?

   
 
 автор: constructor   (26.01.2008 в 22:28)   письмо автору
 
   для: Qiao   (26.01.2008 в 22:14)
 

Что бы было проще можно воспользоваться функцией file
http://softtime.ru/dic/id_dic=176&id_group=6 . Потом прокручиваем массив в цикле, если строка повторилась увеличиваем номер строки и т.д.

   
 
 автор: AVS   (26.01.2008 в 22:38)   письмо автору
 
   для: constructor   (26.01.2008 в 22:28)
 

Так же хотел предложить. Сделать Цикл, внутри которого можно перескакивать на 3 индекса.

   
 
 автор: Qiao   (26.01.2008 в 23:06)   письмо автору
 
   для: AVS   (26.01.2008 в 22:38)
 

> А если не выполняется? Какие строки заносить в базу? В какой последовательности?
А если не выполняется следует перейти к слудеющей проверке (т.е. в базу ничего не заносится, а если выполняется, то всё заносится).
Это словарь - если такое слово уже есть, то его и его чтение и перевод заносить не надо, переходим к проверке следующего слова.

Я придумал как в моём коду можно - просто в холостую прокрутить две строки:
<?php
case 1:
if (
z==1) {z++; i=0; break;} 
if (
z==2) {z=0i=0; break;} 
if (
check($line)) {1i=0; break;}
$insert1 $line;
break; 
?>

   
 
 автор: Trianon   (26.01.2008 в 23:09)   письмо автору
 
   для: Qiao   (26.01.2008 в 23:06)
 

что-то у Вас сложновато как-то...

<?
for(;;)
{
    if(  !(
$line1 fgets($f))
      || !(
$line2 fgets($f))
      || !(
$line3 fgets($f)) )
          break;

    if(
check($line1))
         
add($line1$line2$line3);
}


или даже
<?
while( $line1 fgets($f
   and 
$line2 fgets($f
   and 
$line3 fgets($f) )
  if(
check($line1))
         
add($line1$line2$line3);

   
 
 автор: Qiao   (26.01.2008 в 23:18)   письмо автору
 
   для: Trianon   (26.01.2008 в 23:09)
 

Во! Вот это хорошая система.

Я не задумывался, что с fgets($f) так мутить можно.
И использование for(;;) тоже первый раз вижу.
Спасибо.

   
 
 автор: Trianon   (26.01.2008 в 23:23)   письмо автору
 
   для: Qiao   (26.01.2008 в 23:18)
 

Если строить цикл по перечисленным в файле описаниям (а не в лоб - по строкам), такой код рисуется сам собой - ничего мутить не придется.

while здесь более уместен.

   
 
 автор: Trianon   (26.01.2008 в 23:06)   письмо автору
 
   для: constructor   (26.01.2008 в 22:28)
 

А если файл в память не полезет?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования