2012-02-06 9 views
0

このコードでウェブサイトからのリンクを検索します。リンクからファイルをダウンロードする方法は?

<?php 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"http://example.com"); 
curl_setopt($ch, CURLOPT_TIMEOUT, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
$result=curl_exec ($ch); 
curl_close ($ch); 

// search the results from the starting site 
if($result){ 
    preg_match_all('/<a href="(http:\/\/www.[^0-9]+.pdf?)"/', $result, $output, PREG_SET_ORDER); 
    foreach($output as $item ){ 
     print_r($item); 
     } 
} 
copy($item, 'file.pdf'); 
?> 

ただ1つのpdfがリンクしています。 PHPのリンクで提供されるpdfファイルをダウンロードするコードが必要です。コピー機能が動作しません。 はあなたに感謝:)

+0

ない私は右のあなたの質問を取得してください。見つかったすべてのpdfをダウンロードしてブラウザに送信しますか? – Oldskool

+0

@Oldskool私は、ウェブ上のリンクからすべてのpdfファイルをダウンロードし、それらをコンピュータの私のフォルダに保存します。ありがとうございました – bruine

答えて

1

私はこのコードを使用して、それを解決してきた、@Oldskool :)をありがとう:

<?php 
set_time_limit(0); 
include 'simple_html_dom.php'; 
$url='example.com'; 
//set your save path here 
$path = '/home/igos/pdfs/'; 

$html = file_get_html($url) or die ('invalid url'); 
foreach($html->find('a') as $e) { 
    $link= $e->href; 
    if (preg_match('/\.pdf$/i', $link)) { 
      $result[] = $link; 
      copy($link, $path . basename($link)); 
    } 
} 

?> 
1

がここに二つの問題があります:あなたが唯一のものを保存していない、あなたのforeachループの内側に印刷されている

  1. 静的ファイル名がfile.pdfcopy()関数を使用しています。
あなたはおそらくあなたのforeachループ内と同じ名前またはランダムな何か(そうでない場合は、各保存操作が前の file.pdfを上書きする)このように、何かのいずれかですべてのファイルを保存したいと思うでしょう

// Set your save path here 
$path = '/home/igos/pdfs/'; 

foreach($output as $item){ 
    copy($item, $path . basename($item)); 
    } 

これは、元のファイル名を/home/igos/pdfs/フォルダに保存して、すべてのファイルを保存します。

+0

私はそれを試しましたが、ブラウザは警告を出します:basename()は、パラメータ1が文字列であることを期待しています。配列 – bruine

+0

@igos実際のファイル名を保持する変数を使用する必要がありますprint_r($ item) '出力)。おそらく '$ item [0]'のようなものです。 – Oldskool

+0

私は一歩一歩手伝ってくれますか?最初に、私はpdf拡張子でリンクをクロールする必要があります。私は新しい質問をする[http://stackoverflow.com/questions/9187865/find-link-in-pdf-extension] – bruine

関連する問題