0

我正在索引网页。该代码扫描网页中的链接和给定标题的网页。链接和标题存储在两个不同的数组中。我想创建一个多维数组,其中包含单词 Array,后跟链接,然后是链接的各个标题。我有代码,我只是不知道如何把它放在一起。

     require_once('simplehtmldom_1_5/simple_html_dom.php');
require_once('url_to_absolute/url_to_absolute.php');
 //links
$links = Array();
$URL = 'http://www.youtube.com'; // change it for urls to grab  
// grabs the urls from URL 
$file  = file_get_html($URL);
foreach ($file->find('a') as $theelement) {
   $links[] = url_to_absolute($URL, $theelement->href);
} 
print_r($links);
   //titles
  $titles = Array();
  $str = file_get_contents($URL);  
  $titles[] = preg_match_all( "/\<title\>(.*)\<\/title\>/", $str, $title );

   print_r($title[1]);
4

2 回答 2

1

您应该能够做到这一点,假设链接数量与标题数量相同,那么它们应该对应于相同的数组键。

$newArray = array();

        foreach ($links as $key=>$val)
        {
            $newArray[$key]['link'] = $val;
            $newArray[$key]['title'] = $titles[$key];
        }
于 2012-09-16T13:53:04.407 回答
0

目前尚不清楚您想要什么。

无论如何,这就是我将以更有条理的方式重写您的代码的方法:

require_once('simplehtmldom_1_5/simple_html_dom.php');
require_once('url_to_absolute/url_to_absolute.php');

$info = array();

$urls = array(
    'http://www.youtube.com',
    'http://www.google.com.br'
);

foreach ($urls as $url)
{
    $str = file_get_contents($url);
    $html = str_get_html($str);

    $title = strval($html->find('title')->plaintext);

    $links = array();
    foreach($html->find(a) as $anchor)
    {
        $links[] = url_to_absolute($url, strval($anchor->href));
    }
    $links = array_unique($links);

    $info[$url] = array(
        'title' => $title,
        'links' => $links
    );
}

print_r($info);
于 2012-09-16T13:59:05.897 回答