2017-07-17 162 views
1

以下代码正在检查页面内的链接,然后尝试处理这些链接并通过返回标题代码来检查它们是否工作。 我基本上需要使用第二个函数中第一个函数的返回值$ links。可能吗?PHP在另一个函数中使用函数的返回值

这里是我的代码

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

'return ** $ links **;'?你的意思是你只是想存储'checkPage()'函数的值?这是PHP101 ...'$ links = checkPage($ content);'。 –

+0

你只需要'$ links = checkPage($ content);'?这看起来是从你的代码中遗失的,但这是非常基本的PHP考虑你已经拥有的。 – iainn

+0

是的,我忘了复制包含一段HTML标记的变量“content”。返回** $ links **;应该在没有星号的情况下显示,因为我试图在页面编辑器中加粗这个词。 – gcerni

回答

2

要打印的返回值,但此后会忽略它:

print_r(checkPage($content)); 

商店中的一个变量返回的值。它不需要是相同的变量名称。在这种情况下,可能不应该使用相同的变量名来保持概念清晰。因此,像这样:

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

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

从函数返回值不作变量本身提供的功能之外。它只是意味着当你调用该函数时,那个函数调用会对结果进行求值,就像你在内部定义结果而不是调用函数一样。您只需将该结果存储在一个变量中即可使用它,就像任何其他值一样。

+0

谢谢,我仍然是新的编码。 – gcerni