imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 15.02.2004, 00:52     # 1
Kirill Mezintsev
Junior Member
 
Регистрация: 30.03.2003
Адрес: В избушке на окраине Москвы
Сообщения: 109

Kirill Mezintsev Известность не заставит себя ждать
Массовая обработка html-файлов на сайте

Нужно из html-файла считать строки, заключённые в тэги <title></title> (получим $titletext), <body></body> (получим $bodytext), при этом нужно выбросить все html-тэги и оставить только чистый текст.

Также требуется записать имя обрабатываемого файла в переменную $filename, причём должен сохраняться путь к этому файлу от корня сайта (forum/index.html, например).

Предполагается массовая обработка html-файлов на сайте с заходом во все директори и поддиректории, которые есть на сайте.

Как это правильно сделать на PHP?
__________________
Kirill
Kirill Mezintsev вне форума  
Старый 15.02.2004, 00:58     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Зайди в раздел eBooks и попроси книгу по PHP.
RaZEr вне форума  
Старый 15.02.2004, 01:02     # 3
plohich
::VIP::
 
Аватар для plohich
 
Регистрация: 12.10.2003
Пол: Male
Сообщения: 593

plohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собойplohich Имеются все основания чтобы гордиться собой
вообще то это смахивает на работы поискового робота и парочкой функции здесь не ограничиться. тут нужен полновесный движок. если есть $, тебе его быстренко создадут, а расскать это не возможно, только так, общие принципы.
__________________
...за пачку печенья и банку варенья...
plohich вне форума  
Старый 15.02.2004, 23:39     # 4
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Kirill Mezintsev
Цитата:
Нужно из html-файла считать строки, заключённые в тэги <title></title> (получим $titletext), <body></body> (получим $bodytext), при этом нужно выбросить все html-тэги и оставить только чистый текст.
Регулярными выражениями
Цитата:
Также требуется записать имя обрабатываемого файла в переменную $filename, причём должен сохраняться путь к этому файлу от корня сайта (forum/index.html, например).
$filename = $_SERVER['PHP_SELF'];
или
$filename = $_SERVER['SCRIPT_FILENAME'];
Цитата:
заходом во все директори и поддиректории
Directory Functions
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 16.02.2004, 00:09     # 5
esergey
Junior Member
 
Регистрация: 13.02.2004
Сообщения: 61

esergey Путь к славе только начался
//Держи пример
$strin=urlencode($search_w);..преобразование url
$fp=fopen("http://www.ru/","r");считывание сайта по инету
$content="";
if($fp)
{

while (!feof ($fp)) {
$content.= fgets ($fp, 1024);

}//end while
fclose($fp);

//парсинг .ru
$s=ereg('(<title>)(.*)</title>',$content,$regs);
$titletext=$regs[2];

и так для остальных
__________________
- здесь была реклама. увижу еще раз - заменю на 6ть баллов. Plague -
esergey вне форума  
Старый 16.02.2004, 13:01     # 6
Kirill Mezintsev
Junior Member
 
Регистрация: 30.03.2003
Адрес: В избушке на окраине Москвы
Сообщения: 109

Kirill Mezintsev Известность не заставит себя ждать
esergey

Вот работающая конструкция:
PHP код:
<?
    $fp 
fopen("http://site.ru/","r");
    
$content "";
    if (
$fp) {
    while (!
feof ($fp)) {
    
$content .= fgets ($fp102400);
    }
}
    
fclose($fp);

    
$titles ereg("<title>(.*)</title>",$content,$title);
    
$title_text $title[1];
    echo 
$title_text;
    echo 
"<br><br>";

    
$bodys ereg("<body leftmargin=\"4\" topmargin=\"4\" marginwidth=\"4\" marginheight=\"4\">(.*)</body>",$content,$body);
$body_text $body[1];

$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезается javascript
                 
"'<[\/\!]*?[^<>]*?>'si",           // Вырезаются html-тэги
                 
"'([\r\n])[\s]+'",                 // Вырезается пустое пространство
                 
"'&(quot|#34);'i",                 // Замещаются html-элементы
                 
"'&(amp|#38);'i",
                 
"'&(lt|#60);'i",
                 
"'&(gt|#62);'i",
                 
"'&(nbsp|#160);'i",
                 
"'&(iexcl|#161);'i",
                 
"'&(cent|#162);'i",
                 
"'&(pound|#163);'i",
                 
"'&(copy|#169);'i",
                 
"'&(reg|#174);'i",
                 
"'&(#8226);'i",
                 
"'&(#8212);'i",
                 
"'&(#8249);'i",
                 
"'&(#8250);'i",
                 
"'&#(\d+);'e");                    // вычисляется как php

$replace = array ("",
                  
"",
                  
" ",
                  
"\"",
                  
"&",
                  
"<",
                  
">",
                  
" ",
                  
chr(161),
                  
chr(162),
                  
chr(163),
                  
chr(169),
                  
chr(174),
                  
chr(149),
                  
chr(151),
                  
chr(139),
                  
chr(155),
                  
"chr(\\1)");

    
$text preg_replace ($search$replace$body_text);
    echo 
$text;

    echo 
"<br><br>";

$filename $_SERVER['PHP_SELF'];
// $filename = $_SERVER['SCRIPT_FILENAME'];
echo $filename;

?>
$fp = fopen("http://site.ru/","r"); //считывание сайта по инету
На самом деле открывается только один файл index.htm, по сайту скрипт не ходит и не пытается открывать другие файлы.

$filename = $_SERVER['PHP_SELF']; - выводит имя php-скрипта, а не открытый для обработки файл.

$filename = $_SERVER['SCRIPT_FILENAME']; - аналогично, только путь до имени скрипта включает ещё и вышестоящие директории.
__________________
Kirill

Последний раз редактировалось Kirill Mezintsev; 17.02.2004 в 11:22.
Kirill Mezintsev вне форума  


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

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:52.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.