0

我正在构建一个网络爬虫,它从提交的一个 url 中找到的链接中扫描链接、标题和元描述

我认为这个if语句是正确的。$description 是保存数组 $link 中所有描述的变量。但我注意到并非所有网站都有元描述(例如维基百科),所以我决定如果描述为空,我希望前 20 个字符作为描述。(顺便说一句,一切的功能和调用都有效,我只是想让你看看)

     if ($description == '') {
    $html = file_get_contents($link);    
    preg_match('%(<p[^>]*>.*?</p>)%i', $html, $re);
    $res = get_custom_excerpt($re[1]);
    echo "\n";
    echo $res;
    echo "\n";

    }

但是,在数组中,链接存储在 [link] 中,链接的标题存储在 [title] 中,描述存储在 [description] 中。但我不知道如何处理将 $res 添加到我的数组并且仅在 if 语句有效时使用。

$output = Array();

   foreach ($links as $thisLink) {
   $output[] = array("link" => $thisLink, "title" => Titles($thisLink), "description" => getMetas($thisLink), getMetas($res));
     } 
    print_r($output);
4

2 回答 2

0

You can use array_push() to add $res back to your array and then evaluate the array however you need to; not 100% sure what you're trying to do...

于 2012-09-24T18:25:44.737 回答
0

从你的措辞我认为你想这样做:

$outputs = array();

foreach ($links as $thisLink) {
    $output = array("link" => $thisLink, "title" => Titles($thisLink), "description" => getMetas($thisLink));

    if ($output['description'] == null) {
        $output['description'] = getMetas($res);
    }

    $outputs[] = $output;
}

您可能需要调整 if 语句,因为我不知道 getMetas() 在没有描述时返回什么。

于 2012-09-24T18:35:01.827 回答