Автор Тема: Как извлечь строку из файла?  (Прочитано 5896 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Settt

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://poka.net
Как извлечь строку из файла?
« : 17 Мая 2005, 13:20:25 »
Здравствуйте. У меня такой вопрос:
У меня есть файл с текстом, мне нужно
1. Взять отуда каждое предложение или фразу,
2. Проверить встречается ли там слово "which",
3. Если да то записать это предложение в отдельный файл.

Подскажите пожалуйста хотя бы ответ на 1 пункт. Думаю что надо использовать fgets, но я не знаю заранее длину предложения. Пробовал с fgetc но не знаю как сделать проверку на слово.
В принципе понимаю что схема такова - записать строку, используя как конец строки точку (это я сделал с помощью fgetc), а потом проверить есть ли там нужное слово. И так далее.
Заранее спасибо.
Главное - здоровье.

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Как извлечь строку из файла?
« Ответ #1 : 17 Мая 2005, 13:49:49 »
Settt
Самое превое, что приходит в голову:


// читаем файл в строку
$content file_get_contents("file.txt");

// получаем все предложения в виде массива, исходя из логики, что все предложения разделены точкой: 
$sentences explode("."$content);

// для каждого продложения (элемента массива) проверяем вхождение "which"
foreach ($sentences as $sentence) {
    if ( 
preg_match("/which/"$sentence) ) {
     
// пишем предложение ($sentence) в файл. 
    
}
}



Собственно все сводится к [P]file_get_contents[/P], [P]explode[/P] и [P]preg_match[/P].
Не все коту матрица.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как извлечь строку из файла?
« Ответ #2 : 17 Мая 2005, 14:10:41 »
а preg_match-то зачем?
чем strpos обычный не угодил?
и разбивать на предложения лучше, всё-таки, не по ".", а по ". "
если под словом "фраза" имелось в виду "набор символов, оканчивающийся точкой"

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Как извлечь строку из файла?
« Ответ #3 : 17 Мая 2005, 14:39:07 »
Цитировать
RomikChef:
и разбивать на предложения лучше, всё-таки, не по ".", а по ". "


Если предложение последние в абзаце, то ". " может и не прокатить, в виду возможного наличия ".\\n".
Не все коту матрица.

Оффлайн Settt

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://poka.net
Как извлечь строку из файла?
« Ответ #4 : 17 Мая 2005, 20:18:11 »
Спасибо, все работает. Я тоже в начале explode пробовал но ставил как разделитель символ пробела почему-то. Спасибо что наставили на путь истинный =) Но тут возник еще вопросик :
дело в том что слова потом будут сравниватся со словами из БД, а тут в файле слова с запятыми и другими знаками пунктуации. Нельзя ли как нибудь, прежде чем записать текст в файл, удалить из него все запятые? Подскажите пожалуйста если не трудно.
Главное - здоровье.

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Как извлечь строку из файла?
« Ответ #5 : 17 Мая 2005, 22:10:15 »
Цитировать
Settt:
Нельзя ли как нибудь, прежде чем записать текст в файл, удалить из него все запятые?


Можно. [P]preg_replace[/P]
Не все коту матрица.

Оффлайн Settt

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://poka.net
Как извлечь строку из файла?
« Ответ #6 : 18 Мая 2005, 01:09:52 »
Огромное спасибо.
Главное - здоровье.

Оффлайн himera

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://clanwolf.best-host.ru
Как извлечь строку из файла?
« Ответ #7 : 06 Июня 2005, 18:22:45 »
Доброе время суток!
У меня похожий вопрос. Дело в том что у меня после редактирования новости в конце появляется лишний сепаратор (разделитель), что вобщем то не критично но влечет за собой косячки :)
Попробывал перед записью в файл после редактирования проверить на повторяющиеся разделители через str_replace
но что видимо напутал :( не получилось. Очень надеюсь на помощь!
вот собсно код:

<?php
// Определяем сепаратор, по которому будут делиться новости в файле
$separator "[n]";

// Берем переменную новостей из _POST
$content = ( !empty($_POST[\'edit_news\']) ? $_POST[\'edit_news\'] : NULL );

// Если переменной нету
if($content === NULL) die(\'netu peremennoy\');

// Если переменная - не массив
if(!is_array($_POST[\'edit_news\'])) die("Ожидается массив");

// Инициализируем имя файла новостей
$file_name = "../news/news.txt";

// Открываем файл новостей для записи
if(!$fp = fopen($file_name,"w")) die("Не получается открыть файл новостей");

// Перебираем по кускам и записываем в файл, разделяя сепараторами
foreach($content as $current_news) {

        $current_news = str_replace("[n][n]", "[n]", $current_news); //тут я проверяю повтор сепаратора
        fputs($fp,$current_news . $separator);    
 }
// Закрываем файл
fclose($fp);
exit;
?>

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Как извлечь строку из файла?
« Ответ #8 : 06 Июня 2005, 18:28:29 »
himera
Попрбуйте выводить могучей ф-цией print() то, что кладете в файл. На всех этапах обработки строки. Уверен, что сами найдете ошибку.
Не все коту матрица.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как извлечь строку из файла?
« Ответ #9 : 06 Июня 2005, 18:49:20 »
implode вместо foreach

Оффлайн himera

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://clanwolf.best-host.ru
Как извлечь строку из файла?
« Ответ #10 : 07 Июня 2005, 19:30:11 »
Всем огромное спасибо!
Разобрался! :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28