0

我的代码中有一个部分使用 file_get_contents 从给定网页中获取 url。我的代码中还有一个部分用于扫描数组中每个链接值的标题。我希望最终有一个类似于此的数组:

Array(
  Google => array(
    [title] => Google
    [link] => http://www.google.com
  )
)

但是没有值保存到我的数组中,即使我无法检测到任何错误

$links = Array();

$URL = 'http://www.theqlick.com'; // change it for urls to grab  
$file = file_get_contents($URL);
// grabs the urls from URL 
if( strlen( $file )>0 ) {
    $links[] = preg_match_all( "/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/", $file, $links);
}

function Titles() {
    global $links;
    $str = implode('',array_map('file_get_contents',$links));
    error_reporting(E_ERROR | E_PARSE);

    $titles = Array();
    if( strlen( $str )>0 ) {
        $titles[] = preg_match_all( "/\<title\>(.*)\<\/title\>/", $str, $title );
        return $title;   
        return $links;
    } 
}
$newArray = array();

$j = 0;

foreach( $links as $key => $val ){
    $newArray[$key] = array( 'link' => $val, 'title' => $title[1][$j++]);
}

print_r($newArray);
4

1 回答 1

0

以下代码似乎没有返回任何内容

$links[] = preg_match_all( "/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/", $file, $links);

尝试以下

$links = Array();

$URL = 'http://www.theqlick.com'; // change it for urls to grab
$file = file_get_contents($URL);
// grabs the urls from URL
if (strlen($file) > 0) {
    $links[] = preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $file, $links);
}

var_dump($links);

输出

array
  0 => 
    array
      0 => string 'http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd' (length=55)
      1 => string 'http://www.w3.org/1999/xhtml' (length=28)
      2 => string 'http://www.theqlick.com' (length=23)
      3 => string 'http://www.theqlick.com' (length=23)
  1 => 
    array
      0 => string 'd' (length=1)
      1 => string 'l' (length=1)
      2 => string 'm' (length=1)
      3 => string 'm' (length=1)
  2 => int 4
于 2012-09-21T17:58:25.590 回答