2011-08-06 6 views
0

かなり単純なシナリオです。私はユーザー入力URLの配列を持っています(1から1000までの任意の数字が可能です)。そして、それらのすべてでfile_get_contents();を実行したい場合は、可能であれば、すべてのバインド/バインドを1つの変数に入れます。 preg_match_all();をその変数に対して実行して特定の文字列を取り出すことができます。配列にfile_get_contentsを使用していますか?

私は、cURLを使用することは別の選択肢かもしれないと聞いたことがありますが、私はcURLの機能についてほとんど知識がありません。あなたは千件のURLを持っている場合は、お時間がかかるしかし

$urls = array('http://www.example.com/'); 
$allTexts = ''; 
foreach($urls as $url) 
{ 
    $text = file_get_contents($url); 
    if (false === $text) 
     continue; 

    // proceed with your text, e.g. concatinating it: 
    $allTexts .= $text; 
} 

答えて

3

配列の各要素に関数を適用します。カールは、一度に複数のURLをリクエストすることを提案しています(multi request feature)。しかし、何千ものURLも拡張されていません。

+0

ありがとう、ちょうど私が探しているもの。どのように私は$テキストを連結するつもりだろう任意のアイデア?私はforeachによって返されるものを本当に理解していないのですか? – Fireworksable

+1

@ Fireworksable: 'foreach'は実際には関数のようなものを返しません。代わりに、コードブロック内で行うすべての作業が完了します。変数を設定すると、ブロックの後に変数が設定されます。私は '$ allTexts'という名前のすべてのテキストのバッファを使って答えを更新しました。 – hakre

1

使用array_mapは、実は、これはURLのを反復処理のための仕事のように聞こえる

implode('',array_map('file_get_contents',$array)); 
+0

これは非常に単純化された素晴らしい答えです。個人的に、私はそれをやろうと考えたことはありませんでした!毎日何か新しいことを学ぶ。 Up投票済み – Chris

関連する問題