PHP使用另一个函数中函数的返回值

时间:2017-07-17 13:48:50

标签: php curl hyperlink

以下代码检查页面中的链接,然后尝试处理这些链接并检查它们是否有效,方法是返回标题代码。 我基本上需要使用第二个函数中返回值$ links的第一个函数。有可能吗?

这是我的代码

function checkPage ($content){ 
   $textLen = strlen($content);  
   $links = array (); 
   if ( $textLen > 5){ 
      $startPos = 0; 
      $valid = true; 

      while ($valid){ 
         $spos  = strpos($content,'<a ',$startPos); 
         if ($spos < $startPos) $valid = false; 
         $spos     = strpos($content,'href',$spos); 
         $spos     = strpos($content,'"',$spos)+1; 
         $epos     = strpos($content,'"',$spos); 
         $startPos = $epos; 
         $link = substr($content,$spos,$epos-$spos); 
         if (strpos($link,'https://') !== false) $links[] = $link;
         if (strpos($link,'http://') !== false) $links[] = $link;
      } 
   } 
  return **$links**; 
};

print_r(checkPage($content));

foreach ($links as &$link ) {
$ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $link);
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
   $data = curl_exec($ch);
   $headers = curl_getinfo($ch);
   if(curl_error($ch))
{
    echo 'error:' . curl_error($ch);
}   
   curl_close($ch);
   echo $link." returns code ".$headers['http_code']."<br />";  
};

1 个答案:

答案 0 :(得分:2)

您正在打印返回的值,但之后忽略它:

print_r(checkPage($content));

将返回的值存储在变量中。它不需要是相同的变量名。在这种情况下,它可能不应该是相同的变量名称以保持概念清晰。所以像这样:

$returnedLinks = checkPage($content);
print_r($returnedLinks);

foreach ($returnedLinks as $link ) {
    // do something with $link
}

从函数中返回一个值并不会使变量本身在函数外部可用。它只是意味着当您调用该函数时,该函数调用将计算结果,就像您在线定义该结果而不是调用函数一样。您只需将结果存储在变量中即可使用它,就像任何其他值一样。