Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PHP] Скрипт фильтрации по словам 
:(
    Опции темы
viperson
Дата 14.4.2009, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Что так трудно дописать в скрипт пару строк? Я же говорю что не понимаю в пхп и прошу дописать то что надо, чтобы результат сложило в out.txt
PM   Вверх
bars80080
Дата 14.4.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 8
Всего: 315



что, так трудно прочитать пару строк? или все здесь неимоверным усилием воли сами в себе генерируют документацию?
тогда да, это недоступная простым смертным магия
PM MAIL WWW   Вверх
viperson
Дата 14.4.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Цитата(bars80080 @ 14.4.2009,  22:16)
что, так трудно прочитать пару строк? или все здесь неимоверным усилием воли сами в себе генерируют документацию?
тогда да, это недоступная простым смертным магия

что, так трудно написать пару строк? я же сказал не понимаю я в пхп. Подруга попросила помочь, моей целью не является изучать пхп, а просто прошу помочь в решении вопроса. Почему все такие умные?! Помогли бы и дело с концом. Прошу ведь не денег в займы.
PM   Вверх
MoLeX
Дата 15.4.2009, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



Цитата(viperson @  14.4.2009,  22:48 Найти цитируемый пост)
что, так трудно написать пару строк?

тебе их и так написали!


Цитата(viperson @  14.4.2009,  22:48 Найти цитируемый пост)
Подруга попросила помочь, моей целью не является изучать пхп, а просто прошу помочь в решении вопроса.

Сам не разбираешься в вопросе, а еще берешься разобраться и помочь человеку! И всю работу перелаживаешь со своих плеч, на плечи незнакомым тебе людей при чем умудряешься им же и хамить.



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
viperson
Дата 15.4.2009, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Цитата(MoLeX @  15.4.2009,  05:45 Найти цитируемый пост)
Сам не разбираешься в вопросе, а еще берешься разобраться и помочь человеку! И всю работу перелаживаешь со своих плеч, на плечи незнакомым тебе людей при чем умудряешься им же и хамить.



Ну а как бы ты поступил? Отказал бы в помощи? И я никому не хомил. Все то время, что мы тут общаемся всем знактокам пхп не составило бы труда написать пару строк для завершения скрипта, но нет же надо поиздеваться, хотя я сразу написал что я не знаток и прошу помощи.

PM   Вверх
MoLeX
Дата 15.4.2009, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



Цитата(viperson @  15.4.2009,  07:38 Найти цитируемый пост)
Отказал бы в помощи?

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


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
viperson
Дата 15.4.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Так все таки кто-то поможет домучать скрипт? Необходимо чтобы результат записывался в out.txt

Код

$pattern = "#^.*(?:";
$f = fopen("filter.txt", "r");
$i = 0;
while(!feof($f))
{
    $a = preg_replace("#\r?\n#", "",preg_quote(fgets($f)));
    if($i++ == 0) $pattern .= "$a"; else $pattern .= "|$a";
}
$pattern .= ").*$#mx";
$subj = file_get_contents("input.txt");
$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.


PM   Вверх
MoLeX
Дата 15.4.2009, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140





--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
viperson
Дата 15.4.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Мне понятен код

Код

$filename = 'test.txt';
$somecontent = "Добавить это к файлу\n";

// Вначале давайте убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {

    // В нашем примере мы открываем $filename в режиме "дописать в конец".
    // Таким образом, смещение установлено в конец файла и
    // наш $somecontent допишется в конец при использовании fwrite().
    if (!$handle = fopen($filename, 'a')) {
         echo "Не могу открыть файл ($filename)";
         exit;
    }

    // Записываем $somecontent в наш открытый файл.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Не могу произвести запись в файл ($filename)";
        exit;
    }
    
    echo "Ура! Записали ($somecontent) в файл ($filename)";
    
    fclose($handle);

} else {
    echo "Файл $filename недоступен для записи";
}


но как мне увязать его с моим кодом?
PM   Вверх
MoLeX
Дата 15.4.2009, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



как я понял в переменной $subj у тебя то что тебе надо сохранить?
Код

$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.


вот бери эту переменную и сохраняй


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
viperson
Дата 15.4.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



что-то не так со скриптом. Сохраняет пустой файл.
Код

<?
$pattern = "#^.*(?:";
$f = fopen("filter.txt", "r");
$i = 0;
while(!feof($f))
{
    $a = preg_replace("#\r?\n#", "",preg_quote(fgets($f)));
    if($i++ == 0) $pattern .= "$a"; else $pattern .= "|$a";
}
$pattern .= ").*$#m";
$subj = file_get_contents("input.txt");
$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.

// начало записи в файл

$filename = 'out.txt';
$somecontent = "$subj\n";

// Вначале давайте убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {

    // В нашем примере мы открываем $filename в режиме "дописать в конец".
    // Таким образом, смещение установлено в конец файла и
    // наш $somecontent допишется в конец при использовании fwrite().
    if (!$handle = fopen($filename, 'a')) {
         echo "Не могу открыть файл ($filename)";
         exit;
    }

    // Записываем $somecontent в наш открытый файл.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Не могу произвести запись в файл ($filename)";
        exit;
    }
    
    echo "Ура! Записали ($somecontent) в файл ($filename)";
    
    fclose($handle);

} else {
    echo "Файл $filename недоступен для записи";
}


?>


не могу понять что не так. Отработка скрипта происходит без ошибок.

Я так понимаю что может скрипт не понимает что такое "электр". Имеется ввиду и электон и элетонный  и электрический. То есть надо как-то показать скрипту, что необходимо удалить все строки содержащие этот кусок слова. 

Может причина в другом, пока мне понятно.
PM   Вверх
bars80080
Дата 15.4.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 8
Всего: 315



Код

$pattern = "#^.*(?:";
$f = fopen("filter.txt", "r");
$i = 0;
while(!feof($f))
{
    $a = preg_replace("#\r?\n#", "",preg_quote(fgets($f)));
    if($i++ == 0) $pattern .= "$a"; else $pattern .= "|$a";
}
$pattern .= ").*$#mx";
$subj = file_get_contents("input.txt");
$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.

// единственное, что забыл автор - закрыть файл
fclose($f);


// а здесь добавляем второй пример
$filename = 'input.txt';
$somecontent = $subj;

// Вначале давайте убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {

    // В нашем примере мы открываем $filename в режиме "дописать в конец".
    // Таким образом, смещение установлено в конец файла и
    // наш $somecontent допишется в конец при использовании fwrite().
    if (!$handle = fopen($filename, 'a')) {
         echo "Не могу открыть файл ($filename)";
         exit;
    }

    // Записываем $somecontent в наш открытый файл.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Не могу произвести запись в файл ($filename)";
        exit;
    }
    
    echo "Ура! Записали ($somecontent) в файл ($filename)";
    
    fclose($handle);

} else {
    echo "Файл $filename недоступен для записи";
}

и что, много изменений?

если нужно не дописать в конец файла, а полностью перезаписать, то вместо 'a' надо поставить 'w' в строчке 
if (!$handle = fopen($filename, 'a')) { 
, что написано в описании к fopen по-русски
PM MAIL WWW   Вверх
viperson
Дата 15.4.2009, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Цитата(bars80080 @  15.4.2009,  10:05 Найти цитируемый пост)
и что, много изменений?

если нужно не дописать в конец файла, а полностью перезаписать, то вместо 'a' надо поставить 'w' в строчке 
if (!$handle = fopen($filename, 'a')) { 
, что написано в описании к fopen по-русски


Да не много, но по прежнему файл записывается пустой. То есть записыввается, но пустые строки.


я заменил

Код

// а здесь добавляем второй пример
$filename = 'input.txt';


на 

Код

// а здесь добавляем второй пример
$filename = 'out.txt';


для записи результата в отдельный файл.

Может быть для Denwer 3 не подходит такая реализация?

Это сообщение отредактировал(а) viperson - 15.4.2009, 10:30
PM   Вверх
bars80080
Дата 15.4.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 8
Всего: 315



не, проверь вначале, что у тебя в $subj:

Код

$subj = preg_replace($pattern, "", $subj); // В $subj очищенный текст.

var_dump($subj);

// начало записи в файл


что напишет, скопируй сюда

Добавлено через 32 секунды
напишет - в смысле, выдаст в браузер
PM MAIL WWW   Вверх
viperson
Дата 15.4.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 5.1.2009

Репутация: -1
Всего: -1



Цитата(bars80080 @  15.4.2009,  13:58 Найти цитируемый пост)
что напишет, скопируй сюда

Добавлено через 32 секунды
напишет - в смысле, выдаст в браузер



string(1768) " " Ура! Записали ( ) в файл (out.txt)


количество записей в файле input.txt = 1769, в файле out.txt такое же количество пустых строк


почему-то указывает на на предыдущую строку

Это сообщение отредактировал(а) viperson - 15.4.2009, 15:24
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1248 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.