1

748 個の URL:s を含む配列 ($x) があります。ここで、各ページから特定の部分をフェッチし、それらすべての部分を新しい配列に入れたいと考えています。つまり、それぞれが配列 $x で定義された異なる URL からの 748 個のテキストを含む配列です。

これまでに得たコードは次のとおりです。

foreach ($x as $row) {
    $contents = file_get_contents($row);

    $regex = '/delimiter_start(.*?)delimiter_end/s';
    preg_match_all($regex, $contents, $output);
}

var_dump $output を実行すると、ブラウザーで停止を押すまで無限にコンテンツをループし続ける奇妙な配列が得られます。配列は次のようになります。

array(2) {
[0]=>
array(1) {
[0]=>
string(4786) "string 1. The one I want from the first page."}

[1]=>
array(1) {
[0]=>
string(4755) "string 1 again"}}

array(2) {
[0]=>
array(1) {
[0]=>
string(8223) "string 2. The one I want from the second page."}

[1]=>
array(1) {
[0]=>
string(8192) "string 2 again"}}

編集: $output[0] を使用して、探している結果を実際に取得できます。しかし、ループ外でアクセス可能な $output[0] と同じ内容の新しい配列を作成するにはどうすればよいでしょうか?

4

1 に答える 1

0

preg_match_all から表示される出力は標準です。これは、出力配列で一致と完全に一致したコンテンツを受け取るためです。

$lines = Array();
foreach ($x as $row) {
$contents = file_get_contents($row);

$regex = '/delimiter_start(.*?)delimiter_end/s';
preg_match_all($regex, $contents, $output);
    if (is_array($output) && isset($output[0]) && !empty($output[0])){
    $lines[] = $output[0];
}
}
var_dump($lines);
于 2012-12-19T13:16:11.113 に答える