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

Форум PHP

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

 

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

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

тема: проблема при обработка строк файла
 
 автор: Игорь   (25.08.2004 в 02:59)   письмо автору
 
 

Подскажите где в коде ошибка:

Пытаюсь убрать цифры в начале строки.

файл proba.txt

107 Разное
108 Экскурсии и туризм
109 Пищевые продукты
3202 9-этажный жилой дом со встроенными помещениями (Автор: Молчанова Т.А.)
16734 The Tower of London (Автор: Репка Николай)
3206 Автобусная остановка


файл index.php

<?
$file = "proba.txt";
$fh = fopen ($file, "r+");
while (!feof ($fh))
{
$line = fgets ($fh, 4096);
$line1 = strstr($line, ' ');
print $line1."<br>";
}
fclose($fh);
?>

Выдает что-то не то.

И как продолжение хотел бы сделать следующее, что бы удалялся автор, если есть.
То есть, чтобы искало скобки и удаляло их вместе с содержимым.
Вобщем, что бы в итоге обработки файла получилось следующее:

результат:

Разное
Экскурсии и туризм
Пищевые продукты
9-этажный жилой дом со встроенными помещениями
The Tower of London
Автобусная остановка


Подскажите плиз.

   
 
 автор: s1271tvg   (25.08.2004 в 09:08)   письмо автору
 
   для: Игорь   (25.08.2004 в 02:59)
 

ну собственно говоря кое что получилось. Попробуй, потести, если подойдет то будет хорошо!
<?php
$file = "proba.txt";
$fh = fopen ($file, "r+");
while (!feof ($fh))
{
$line = fgets ($fh, 4096);
$line = preg_replace("/\d{1,}\s([^\(]*)\s\(?.*/","\\1.",$line);
print $line."<br>";
}
fclose($fh);
?>

так надежнее должно работать

   
 
 автор: glsv (Дизайнер)   (25.08.2004 в 09:34)   письмо автору
 
   для: s1271tvg   (25.08.2004 в 09:08)
 

Во, классно! А я поленился регулярное выражение писать.

   
 
 автор: Игорь   (25.08.2004 в 12:02)   письмо автору
 
   для: s1271tvg   (25.08.2004 в 09:08)
 

Да то что нужно, работает.
Только точка в конце ставится, а ставить не нужно, но это мелочь,
спасибо за помощь.

   
 
 автор: s1271tvg   (25.08.2004 в 12:08)   письмо автору
 
   для: Игорь   (25.08.2004 в 12:02)
 

Точку я специально поставил но убрать ее просто в регулярном выражении она стоит после "\\1." вот эту точку убираешь и все.

   
 
 автор: Игорь   (25.08.2004 в 12:21)   письмо автору
 
   для: s1271tvg   (25.08.2004 в 12:08)
 

Вот а теперь вобще самое то что надо.
Еще раз спасибо.

   
 
 автор: glsv (Дизайнер)   (25.08.2004 в 09:32)   письмо автору
 
   для: Игорь   (25.08.2004 в 02:59)
 

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


<? 
  // Это файл куда записываются результаты обработки
  $file = fopen ("text2.txt","w+");   
  if ($file) 
  { 
    // Считываем содержимое в массив, разбиение происходит по строкам 
    $file_array = file("text.txt");   
    // Записываем массив обратно в файл 
    foreach ($file_array as $value) 
    { 
      // Убираем цифры в начале строки
      $temp = substr($value, strpos($value," "), strlen($value));
      // Убираем скобки в конце строки
      if (strpos($temp,"(")) $temp = substr($temp, 0, strpos($temp,"(")-1)."\r\n";
      // Записывем обработанную строку в файл
      fwrite ($file, $temp); 
    } 
    fclose ( $file); 
    
    // Выводим на экран результаты обработки
    echo "<br><br>";
    $file_array = file("text2.txt");       
    foreach ($file_array as $value) 
    { 
      echo $value."<br>"; 
    } 
  } 
  else 
  { 
    echo("Ошибка открытия файла"); 
  } 
?> 


Если условия не такие "четкие", тогда придется придумывать регулярное выражение для поиска.

   
 
 автор: s1271tvg   (25.08.2004 в 11:47)   письмо автору
 
   для: glsv (Дизайнер)   (25.08.2004 в 09:32)
 

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

   
 
 автор: Игорь   (25.08.2004 в 12:07)   письмо автору
 
   для: glsv (Дизайнер)   (25.08.2004 в 09:32)
 

Немного не так работает,
но все равно за помощь и идею спасибо.