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

Форум 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 ($fh4096);
$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($valuestrpos($value," "), strlen($value));
      
// Убираем скобки в конце строки
      
if (strpos($temp,"(")) $temp substr($temp0strpos($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)
 

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

   
Rambler's Top100
вверх

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