-2

この例のようなフォルダー構造があります

Groups 
- apple
-- ahen45.html
-- rev34.html
-- ......

- bat
-- fsf.html
-- ere.html
--....

...

グループは親に折りたたまれています。リンゴ、バットなどのサブフォルダー

このように、500 以上のサブ フォルダーと 20000 以上の html ファイルがあります。今、これらの html ファイルを php で読み込もうとしており、タイトルメタキーワード本文、およびサブフォルダーをカテゴリとして分離しています。

<?php
$file =$_SERVER["DOCUMENT_ROOT"];
$dir = new RecursiveDirectoryIterator('groups/',
    FilesystemIterator::SKIP_DOTS);

$it  = new RecursiveIteratorIterator($dir,
    RecursiveIteratorIterator::SELF_FIRST);

$it->setMaxDepth(1);

foreach ($it as $fileinfo) {
    if ($fileinfo->isDir()) {
       echo $category = $fileinfo->getFilename();

    }
    else if ($fileinfo->isFile()) {
        $fileinfo->getFilename();
        $myURL = $file.'/group/groups/'.$category.'/'.$fileinfo->getFilename();

        $doc = new DOMDocument();
        $doc->loadHTMLFile($myURL);

        $elements = $doc->getElementsByTagName('meta');
        $elements = $doc->getElementsByTagName('title');
        $elements = $doc->getElementsByTagName('body'); 

    foreach ($elements as $el) {
            echo $el->nodeValue, PHP_EOL;
    }

    }
}
?>

このようにしようとすると、ページ全体がチェックされ、タグ(またはのような他のタグ)が閉じられていないなどの警告が表示されます。完璧に仕事をするにはどうすればよいですか?

4

2 に答える 2

1

手順に従ってください:

  1. readdirを使用してディレクトリを読み取る
  2. 次に、 glob()html filesを使用してすべてを読み取ります。ディレクトリ内のファイルとフォルダーを一覧表示する方法 (PHP) を参照 してください。
  3. get_meta_tags()を使用して取得meta tagsおよびfor title参照する PHP を使用して HTML ページのタイトルを取得するにはどうすればよいですか? 状態を変更する必要があるボディに使用される同じコードpreg_matchこれも試す ことができます 外部Webサイトからタイトルとメタタグを取得する

上記のポイントを試してみると、ある程度の成功が得られます。その後、新しいquestion

于 2013-09-05T04:53:50.813 に答える
0
<?php
$file =$_SERVER["DOCUMENT_ROOT"];
$dir = new RecursiveDirectoryIterator('groups/',
    FilesystemIterator::SKIP_DOTS);

$it  = new RecursiveIteratorIterator($dir,
    RecursiveIteratorIterator::SELF_FIRST);

$it->setMaxDepth(1);

foreach ($it as $fileinfo) {
    if ($fileinfo->isDir()) {
       echo $category = $fileinfo->getFilename();      
    }
    else if ($fileinfo->isFile()) {
        $fileinfo->getFilename();
        $myURL = $file.'/group/groups/'.$category.'/'.$fileinfo->getFilename();


        $doc = new DOMDocument();
        @$doc->loadHTMLFile($myURL);
        $doc->strictErrorChecking = false;
        $doc->recover=true;
        $doc->formatOutput = true;

        $metas = $doc->getElementsByTagName('meta');        
        $elements1 = $doc->getElementsByTagName('title');
        $elements2 = $doc->getElementsByTagName('body');

            for ($i = 0; $i < $metas->length; $i++)
            {
                $meta = $metas->item($i);
                if($meta->getAttribute('name') == 'keywords'){
                    echo $keywords = $meta->getAttribute('content');
                    echo "<br/>";
                }
            }

            foreach ($elements1 as $el1) {
                echo $el1->nodeValue, PHP_EOL;
                echo "<br/>";
            }
            foreach ($elements2 as $el2) {
                echo $el2->nodeValue, PHP_EOL;
                echo "<br/>";
            }       
    }
    echo "<hr>";
}

?>
于 2013-09-05T12:12:34.713 に答える