以下代码检查页面中的链接,然后尝试处理这些链接并检查它们是否有效,方法是返回标题代码。 我基本上需要使用第二个函数中返回值$ 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 />";
};
答案 0 :(得分:2)
您正在打印返回的值,但之后忽略它:
print_r(checkPage($content));
将返回的值存储在变量中。它不需要是相同的变量名。在这种情况下,它可能不应该是相同的变量名称以保持概念清晰。所以像这样:
$returnedLinks = checkPage($content);
print_r($returnedLinks);
foreach ($returnedLinks as $link ) {
// do something with $link
}
从函数中返回一个值并不会使变量本身在函数外部可用。它只是意味着当您调用该函数时,该函数调用将计算结果,就像您在线定义该结果而不是调用函数一样。您只需将结果存储在变量中即可使用它,就像任何其他值一样。