0

こんにちは私は自分のウェブサイトのサイトマップを作成しようとしています(そして私はアプリケーションを使用したくない、またはすぐに使用できるコードを使用したくない)

これが私のコードの仕組みです。まず、ルートディレクトリでファイルをスキャンし、それらを配列に配置します。次に、配列をループしてそのファイルのコンテンツを取得し、リンク(タグ)のコンテンツを解析します。

ディレクトリをスキャンする

public function scan($directory)
{
        $dir = dir($directory);
        while (($file = $dir->read()) !== false) {
       $type  = ($this->is_directory($directory.$file)) ? 'dir' : 'link' ;
           $this->files[] =  array('address'=>$directory.DIRECTORY_SEPARATOR.$file , 'type'=>$type); 
       }
       sort($this->files);    
       $dir->close();      
}

トラフファイルをループし、その内容を解析する

 public function get_links(){
         foreach($this->files as $f )
         {
             if($f['type']  == 'link' )
             { 
                    $contents =  file_get_contents($f['address']);
                    $DOM = new DOMDocument();
                    $DOM->loadHTML($contents);
                    $a = $DOM->getElementsByTagName('a');
                    foreach($a as $link){
                        $this->links[] =  $link->getAttribute('href');
                    }

             }
         }
     }

ここで問題となるのは、コードの2番目の部分でファイルの内容を取得すると、そのファイルのphpコードが実行されないことです。だから私は次のようなものを得るかもしれません:

www.site.com/<?php echo $a; ?>.html
or
www.site.com/news.php?id=<?php echo $a; ?>

どうすればこれを解決できますか?私はカールに行くべきですか?しかし、それはファイルでは機能せず、URLアドレスでのみ機能します

4

3 に答える 3

1

はい、カールを使用する必要があります。file_get_contents()ハードディスク上のファイルをバイト単位で読み取ります。つまり、コードを読み取り、実行しません。

明確にするために:cURLを厳密に使用する必要はありませんが、ファイルシステムからではなく、Webサーバーを介してページを要求できるようにするものは何でも使用できます。したがって、サーバーがそれをサポートしている場合は可能ですがfile_get_contents('http://example.org')、URLを使用することはできません。

于 2012-11-29T14:10:53.667 に答える
1

それはあなたのphpファイルがどれほど複雑かによります。MVCまたはフレームワークを使用している場合は、ファイルの内容をロードするほど簡単ではない可能性があります。単純なphpファイル(いくつかのクラスが含まれているいくつかのスタンドアロンページ)がある場合は、次のことができます。

ob_start();
include($f['address']);
$content = ob_get_contents();
ob_end_clean();
于 2012-11-29T14:12:00.970 に答える
1

Webサーバーでピンポンを再生し、http://mysite.com/myfile.phpのようなURLを使用してファイルにアクセスする必要があります。

httpコンテンツを取得するにはさまざまな方法があります。たとえば、ここを参照してください: fopenがサーバーで機能していません

于 2012-11-29T14:14:03.760 に答える