1

我有一个包含 748 个 URL:s 的数组 ($x)。现在,我想从每个页面中获取特定部分并将所有这些部分放入一个新数组中。也就是说,一个包含 748 段文本的数组,每段都来自数组 $x 中定义的不同 URL。

这是我到目前为止的代码:

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 回答