IMHO.WS

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

Kirill Mezintsev 15.02.2004 01:52

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

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

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

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

RaZEr 15.02.2004 01:58

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

plohich 15.02.2004 02:02

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

Saruman 16.02.2004 00: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 01: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 14:01

esergey

Вот работающая конструкция:
PHP код:

<?
    $fp = fopen("http://site.ru/","r");
    $content = "";
    if ($fp) {
    while (!feof ($fp)) {
    $content .= fgets ($fp, 102400);
    }
}
    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, время: 13:17.

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