Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   О сайте и форуме (http://forum.oszone.net/forumdisplay.php?f=17)
-   -   Можно ли редактировать сохраненные странички форума ? (http://forum.oszone.net/showthread.php?t=110807)

Tigr 06-07-2008 00:49 843502

Можно ли редактировать сохраненные странички форума ?
 
Многие темы представляют собой хорошее учебное пособие по решению каких-либо проблем. Часто такие темы насыщены не относящимися к делу ("шумовыми") сообщениями. Вырезать их, открыв в Блокноте HTML-код - не самый удобный способ. Можно ли выложить инструмент (если таковой можно выдрать из движка форума, конечно), к-й позволил бы открыв сохраненную на хард страничку, удалить нежелательные посты ? Не сравнивал код обычных страничек с тем, что получается если использовать функцию "Версия для печати", но мне намного приятнее смотреть на обычный вид.

Blast 06-07-2008 00:51 843506

такие инструменты называются HTML-редакторами :)

Tigr 06-07-2008 01:35 843541

Спасибо, но я уже упоминал Блокнот. В бытность модером пользовался намного более простой возможностью удаления (переноса и т.п.) постов и тем.

fantik 06-07-2008 01:44 843546

Tigr,

Я Вас понимаю. Я тоже люблю блокнот (Ну, не совсем, конечно, блокнот, но текстовый редактор).

Но существует такие, как DreamWeaver, к примеру.. Там совсем необязательно в коде копаться :yes:

А "простая" возможность переноса и редактирования - это лишь вершина айсберга под названием PHP, всю работу делает за вас движок форума... А сохраненные версии - чистый сгенерированный HTML, и править его "по-простому" ну никак не получится.

Tigr 06-07-2008 01:56 843556

Цитата:

Цитата fantik
А сохраненные версии - чистый сгенерированный HTML, и править его "по-простому" ну никак не получится. »

Теперь понял - спасибо.

Coutty 06-07-2008 08:15 843627

Tigr, если ну очень надо, то можно и написать свой PHP-парсер (а то и вовсе JavaScript'овый :)). Прикрепи пример того, что есть и того, что хотел бы получить из того, что есть) Может, на досуге попробую...

Sham 06-07-2008 09:44 843645

если есть Firefox, то лучший вариант это плугин firebug - в режиме inspect выделять целые посты и удалять... для IE другой софт типа этого есть...

Tigr 06-07-2008 13:58 843797

Цитата:

Цитата Coutty
Прикрепи пример того, что есть и того, что хотел бы получить из того, что есть »

Возьми любую тему и попробуй написать скрипт под IE, удаляющий выделенный пост.
Цитата:

Цитата Sham
для IE другой софт типа этого есть... »

Буду очень рад подробностям.

Sham 06-07-2008 15:48 843876

я имел в виду Internet Explorer Developer Toolbar, но к сожалению, как только что убедился, удалить ничего не получится (не нашел заветной кнопочки)...

fantik 06-07-2008 16:25 843895

Tigr, Sham,

ИМХО проще всего будет открыть страничку форума в DreamWeaver или в том же простеньком Nvu (он, к тому же, и бесплатный) и просто всё удалить.

Конечно, если это в масштабах сотен страниц, то проще написать парсер.

Tigr 06-07-2008 18:22 843965

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

maik5 06-07-2008 18:54 843979

Уже несколько лет использую малюсенькую программку ВебЛомастер (жаль, что автор больше не развивает проект) + остатки редактирую в блокноте, а далее сохраняю в Chm формат.

Coutty 06-07-2008 19:02 843990

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

PHP код:

<?php
function repl($str) {
  
$str str_replace(":pastequote("':posthide('$str);
  
$str str_replace('">Цитировать''">Удалить'$str);
  
$str str_replace('</head>'"<script>function posthide(a,num){location.href='?file=$_GET[file]&delpost='+num;}</script></head>"$str);
  return 
$str;
}
if (!
$_GET['file'] && !$_GET['delpost'])
  {
  if (
$handle opendir('.')) {
    while (
false !== ($file readdir($handle))) {
        if (
$file != "." && $file != ".." && $file != "index.php")
          echo 
"<a href='?file=$file'>$file</a><br />";
    }
    
closedir($handle);
  }
}
else if (!
$_GET['delpost'] && $_GET['file'])
  {
  
$fp fopen($_GET['file'], "r");
  
$content fread($fp1000000);
  
fclose($fp);
  echo 
repl($content);
  }

else if (
$_GET['file'] && $_GET['delpost'])
{
  
$fp fopen($_GET['file'], "r");
  
$content fread($fp1000000);
  
fclose($fp);
  
$a strpos($content"<!-- post #".$_GET['delpost']);
  
$b strpos($content"<!-- / post #".$_GET['delpost']." -->", ($a+10));
  
$begin substr($content0$a);
  
$end substr($content$b);
  
$all repl($begin.$end);
  
$fp fopen($_GET['file'], 'w');
  
fwrite($fp$all);
  echo 
$all;
  
fclose($fp);
}
?>

1. Предполагается, что у вас есть веб-сервер, способный обрабатывать PHP-скрипты.
2. Создаёте в веб-каталоге папку, скажем, oszone.
3. Кидаете туда этот скрипт под именем index.php (в принципе - на ваш вкус).
4. Кидаете в папку с этим скриптом html-странички с форума (mht не обрабатывает, уж извините). CSS, JS и прочее - не надо. Они всё равно не будут задействоваться.
5. Открываете в браузере 127.0.0.1/oszone/index.php (или куда вы там сохранили).
6. Отображается список файлов из каталога.
7. Выбираете нужный файл, кликая по ссылке.
8. Открывается html-страничка. Правда без оформления. Но это пока не важно. Пусть будет такая. Вместо ссылок "Цитировать" будут ссылки "Удалить".
9. Собственно, кликая по ссылкам "Удалить", удаляете ненужные сообщения. Удаляются без запроса подтверждения. AJAX реализовывать не стал. Пока это всего лишь "рыба"-скрипт.
10. Копируете html-страничку из папки со скриптом в старое место. Все стили и скрипты на месте и работают.

Рекомендую сначала потестировать на копиях (и сами бы догадались, но я предупредил:)).
Удаление рекламы и лишнего оформления - на ваш вкус.

Да, ещё: страницы кэшируются по умолчанию. Это следует учитывать.
И веб-сервер должен иметь права записи на соответствующие html-файлы.

fantik 06-07-2008 19:15 844010

Код:

$fp = fopen($_GET['file'], "r");
 $content = fread($fp, 1000000);
 fclose($fp);

Предлагаю заменить на
Код:

$content = file_get_contents ($_GET['file'])
Соответственно,
Код:

  $fp = fopen($_GET['file'], 'w');
  fwrite($fp, $all);
  echo $all;
  fclose($fp);

на
Код:

file_put_contents ($_GET['file'], $all) ;
echo $all ;


Tigr 06-07-2008 20:23 844056

Цитата:

Цитата fantik
Предполагается, что у вас есть веб-сервер, способный обрабатывать PHP-скрипты. »

(радостно) Я знал, я знал, что редактировать html-документ можно только изучив Хатха-Йогу !!! (напевая "харе Кришна" удаляется)

sanek_freeman 06-07-2008 20:40 844070

Tigr, может потом как-нибудь выложешь свою подборку полезных тем. ;) Это будет один из ценнейших материалов на форуме. :)

Tigr 06-07-2008 20:56 844085

Цитата:

Цитата sanek_freeman
Это будет один из ценнейших материалов на форуме. »

Он ценен для меня. В этой подборке хаотично сохраненные странички, к-е я пытался более или менее вдумчиво распихивать по папкам. Могу в любой момент выложить это и прислать линк, но на всеобщее, думаю, срамиться не нужно.

Coutty 06-07-2008 21:05 844094

fantik, предложения принимаются) Я ж не профи в PHP-кодерстве:)
Tigr, действительно, а ведь потом ещё и темы читать надо, попутно кликая по ссылке "Удалить" над посторонними сообщениями. Вот бы программка сама странички чистила!

Tigr 06-07-2008 21:23 844108

Coutty, там линк на изображение битый :(


Время: 20:40.

Время: 20:40.
© OSzone.net 2001-