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

Форум PHP

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

 

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

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

тема: Вывод нужных строк из текстового файла
 
 автор: Cepseu   (16.10.2005 в 19:40)   письмо автору
 
 

Имеются два разных текстовых файла. Например:

1| текст_1
2| текст_2
3| текст_3
4| текст_4
5| текст_5
6| текст_6
7| текст_7

и второй

4
6
3

Каким образом мне по полученным значениям из второго файла (4,6,3)
вывести строки первого файла:
4| текст_4
6| текст_6
3| текст_3

Я совсем запутался ничего не выходит.

   
 
 автор: cheops   (16.10.2005 в 20:01)   письмо автору
 
   для: Cepseu   (16.10.2005 в 19:40)
 

Можно поступить следующим образом
<?php 
  
// Файл с информацией
  
$filetext "text.txt";
  
// Помещаем содержимое файла в массив
  
$arr file($filetext);
  
// В цикле выводим имена файлов и переходы
  
foreach($arr as $line)
  {
    list(
$index$content) = explode("|"$line);
    
$temp[$index] = $content;
  }
  
  
// Файл с информацией
  
$filetext "index.txt";
  
// Помещаем индексы для вывода в массив
  
$ind file($filetext);
  
// В цикле выводим необходимую информацию
  
foreach($ind as $index)
  {
    
$index += 0;
    echo 
$index."|".$temp[$index]."<br>";
  }
?>

   
 
 автор: Cepseu   (16.10.2005 в 21:07)   письмо автору
 
   для: cheops   (16.10.2005 в 20:01)
 

Попробовал что то ничего не выводит
А А может из-за того что переменная $filetext обоих файлов одинаково называется
Сейчас ещё попробую...

   
 
 автор: Cepseu   (16.10.2005 в 21:33)   письмо автору
 
   для: Cepseu   (16.10.2005 в 21:07)
 

Нет не работает. И по отдельности циклы ничего не выводят.
Например:

<?php 
  $filetext 
"text.txt"
  
$arr file($filetext);  //И так  $arr[] = file($filetext); тоже
  
foreach($arr as $line
  { 
echo 
$line;
  } 
?>

   
 
 автор: DDK   (16.10.2005 в 22:10)   письмо автору
 
   для: Cepseu   (16.10.2005 в 21:33)
 

Вот рабочий код:

<? 
$indexfilename 
"1.txt";
$resfilename "2.txt";
### Читаем файл интексов в массив ###
$indexarray file($indexfilename);
$indexarray str_replace("\r\n"""$indexarray);
### Читаем файл с описаниями ###
$tmpresarray file($resfilename);
$tmpresarray str_replace("\r\n"""$tmpresarray);
$i 0;
while(
$i count($tmpresarray)) {
$temparray explode("| "$tmpresarray[$i]); 
$tmpcount $temparray[0];
$resarray[$tmpcount] = $temparray[1];
$i++;}
### Вывод нужных строк ###
for($i=0$i count($indexarray); $i++) {
$tmpcount $indexarray[$i];
echo 
$resarray[$tmpcount]."<br>";}
?>


Если вам нужно выводить строки в формате "4| текст_4", а не просто "текст_4", то стоит заменить строку:

echo $resarray[$tmpcount]."<br>";}

на строку:

echo $tmpcount."| ".$resarray[$tmpcount]."<br>";}

Всё.

   
 
 автор: DDK   (16.10.2005 в 22:28)   письмо автору
 
   для: DDK   (16.10.2005 в 22:10)
 

Да и код тов. Хеопса корректно работает, просто вы имена файло не так подставили:

<?
  
// Файл со строками, которые нужно вывести (типа 1| текст_1)
  
$filetext "2.txt"
  
// Помещаем содержимое файла в массив 
  
$arr file($filetext); 
  
// В цикле выводим имена файлов и переходы 
  
foreach($arr as $line
  { 
    list(
$index$content) = explode("|"$line); 
    
$temp[$index] = $content
  } 
   
  
// Файл с номерами строк в ресурсном файле (2.txt) 
  
$filetext "1.txt"
  
// Помещаем индексы для вывода в массив 
  
$ind file($filetext); 
  
// В цикле выводим необходимую информацию 
  
foreach($ind as $index
  { 
    
$index += 0
    echo 
$index."|".$temp[$index]."<br>"
  } 
?> 

   
 
 автор: Cepseu   (16.10.2005 в 23:31)   письмо автору
 
   для: DDK   (16.10.2005 в 22:28)
 

Че то и второй скрипт у меня не заработал
не пойму в чем дело :(
Ладно буду разбираться.
Спасибо.

   
 
 автор: DDK   (16.10.2005 в 23:36)   письмо автору
 
   для: Cepseu   (16.10.2005 в 23:31)
 

Попробуйте ещё так:

<? 
$indexfilename 
"1.txt"
$resfilename "2.txt"
### Читаем файл интексов в массив ### 
$indexarray file($indexfilename); 
$indexarray str_replace("\r\n"""$indexarray);
$indexarray rtrim($indexarray);
### Читаем файл с описаниями ### 
$tmpresarray file($resfilename); 
$tmpresarray str_replace("\r\n"""$tmpresarray); 
$i 0
while(
$i count($tmpresarray)) { 
$temparray explode("| "$tmpresarray[$i]); 
$tmpcount $temparray[0]; 
$resarray[$tmpcount] = $temparray[1]; 
$i++;} 
### Вывод нужных строк ### 
for($i=0$i count($indexarray); $i++) { 
$tmpcount $indexarray[$i]; 
echo 
$resarray[$tmpcount]."<br>";} 
?> 

   
 
 автор: cheops   (17.10.2005 в 01:17)   письмо автору
 
   для: Cepseu   (16.10.2005 в 21:33)
 

>Нет не работает. И по отдельности циклы ничего не выводят.
Можете дать кусок вашего файла text.txt как есть, прикрепив его к сообщению? Какая версия PHP?

   
 
 автор: Cepseu   (17.10.2005 в 19:15)   письмо автору
 
   для: cheops   (17.10.2005 в 01:17)
 

Сегодня попрбовал на работе у меня там Апач и пхп на винде стоит, всё заработало.
А дома на Линуксе (в котором я недавно юзаю), разобрался в чём проблема - "права".
Большое спасибо вы мне очень помогли - оба скрипта рабочие. :))

   
Rambler's Top100
вверх

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