2011-07-21 21 views
6

ウェブページがアクセス可能な外部のウェブページのディレクトリリストを解析することは可能ですか?それがアクセスしたときのファイルのリストを表示します。 PHPでファイルを動的に解析することは可能ですか? -thank you外部Webページのディレクトリ一覧を解析できますか?

ご迷惑をおかけして申し訳ありません。私は、 http://www.ibiblio.org/pub/(/の索引)と、スクリプトとしてコンテンツを配列やその他のものとして読みやすくする機能を持っています。

答えて

4

あなたはあなたのケースのためにpreg_matchまたはDomDocument

を使用することができます。

$contents = file_get_contents("http://www.ibiblio.org/pub/"); 
preg_match_All("|href=[\"'](.*?)[\"']|", $contents, $hrefs); 
var_dump($hrefs); 

あなたはworking demoを見てみたい場合。

0

はい、非常に可能です。私はあなたがディレクトリリストで何を意味するかははっきりしていませんが、ウェブサイトのクローラを調べるべきです。これは本質的にあなたが尋ねてきたことですが、PHPで書かれています。

+0

私は彼がApacheディレクトリリスト(オプション+インデックス)を解析したいと思うと思います。 – genesis

+0

私はディレクトリリストを意味します。外部ドメイン上のファイル(画像フォルダと言う)を含むディレクトリです。 –

0

PHP file_get_contentあなたのためのトリックを行います。

あなたがDOMDocumentを使用することができ、適切なXHTMLドキュメント内のリンクのフルバックをディレクトリ一覧を取得している場合は

+1

はい私はページが/ etcなどのインデックスを持つファイルのリストを返すと確信しています。これはトリックの感謝をしました。これを配列に変換するか、 –

+0

配列への変換----------区切り記号で区切ることができます。区切り記号は "\ n"となります。 –

2

を(あなたが言及したように、このページのためのあなたのhttpリクエストは、ファイルのリストを返すと仮定)

$doc = new DOMDocument(); 
$doc->preserveWhitespace = false; 
$doc->load('directorylisting.html'); 

$files = $doc->getElementsByTagName('a'); 

$filesは今、あなたは内のファイルへのフルパスを取得するためにhref属性を反復処理して得ることができますDOMElement秒のリストです、そしてコードこのようなファイルのリストを取り戻すために、次のようリスト。

この方法では、には、という適切な形式のディレクトリリストがサーバーから返されている必要があります。たとえば、stackoverflow.comでリクエストを行い、ファイルのディレクトリリストを取得することはできません。

これは、あなたは、このようなように、<aタグを見つけるために、正規表現(例えばpreg_match_allを。)使用することができます(おそらく、不正なHTMLを)うまくいかない場合:

preg_match_all('@<a href\="([a-zA-Z\.\-\_\/ ]*)">(.*)</a>@', file_get_contents('http://www.ibiblio.org/pub/'), $files); 
var_dump($files); 

$filesまだマッチしたことになる要素、ちょうどセット配列の。


UPDATE、私はあなたのURL(http://www.ibiblio.org/pub/)でテストされ、それが(preg_match_all方法)正常に動作します。

関連する問題