IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Массовая обработка html-файлов на сайте (http://www.imho.ws/showthread.php?t=51332)

Kirill Mezintsev 15.02.2004 00:52

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

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

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

Как это правильно сделать на PHP?

RaZEr 15.02.2004 00:58

Зайди в раздел eBooks и попроси книгу по PHP.

plohich 15.02.2004 01:02

вообще то это смахивает на работы поискового робота и парочкой функции здесь не ограничиться. тут нужен полновесный движок. если есть $, тебе его быстренко создадут, а расскать это не возможно, только так, общие принципы.

Saruman 15.02.2004 23:39

Kirill Mezintsev
Цитата:

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

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

заходом во все директори и поддиректории
Directory Functions

esergey 16.02.2004 00:09

//Держи пример
$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];

и так для остальных

Kirill Mezintsev 16.02.2004 13:01

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']; - аналогично, только путь до имени скрипта включает ещё и вышестоящие директории.


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

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