2017-07-17 3 views
1

Der folgende Code prüft auf Links innerhalb einer Seite und versucht dann, diese Links zu verarbeiten und zu überprüfen, ob sie funktionieren oder nicht, indem ein Header-Code zurückgegeben wird. Ich brauche im Grunde die zurückgegebenen Wert $ Links der ersten Funktion in der zweiten. ist es möglich?PHP Rückgabewert einer Funktion in einer anderen Funktion verwenden

hier ist mein Code

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 **;'? Meinst du, dass du einfach den Wert aus der 'checkPage()' Funktion speichern willst? Das ist PHP101 ... '$ links = checkPage ($ content);'. –

+0

Benötigen Sie nur '$ links = checkPage ($ content);'? Das scheint in deinem Code zu fehlen, aber das ist sehr einfaches PHP, wenn man bedenkt, was du bereits hast. – iainn

+0

Ja, ich habe vergessen, die Variable "content" zu kopieren, die ein Stück HTML-Markup enthält. Rückgabe ** $ Links **; sollte ohne die Sternchen angezeigt werden, als ich versuchte, das Wort auf dem Seiteneditor hier fett zu machen. – gcerni

Antwort

2

Sie drucken den zurückgegebenen Wert, aber dann ist es danach zu ignorieren:

print_r(checkPage($content)); 

Shop der zurückgegebene Wert in einer Variablen. Es benötigt nicht, um den gleichen Variablennamen zu sein. Und in diesem Fall sollte es wahrscheinlich nicht der gleiche Variablenname sein, um das Konzept klar zu halten. So etwas wie folgt aus:

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

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

einen Wert aus einer Funktion macht Rückkehr nicht die Variable selbst außerhalb der Funktion zur Verfügung. Es bedeutet nur, dass der Funktionsaufruf zu einem Ergebnis führt, wenn Sie die Funktion aufrufen, als ob Sie das Ergebnis inline definiert hätten, anstatt eine Funktion aufzurufen. Sie müssen das Ergebnis nur in einer Variablen speichern, um es zu verwenden, genau wie bei jedem anderen Wert.

+0

Danke, ich bin immer noch neu rund um die Codierung. – gcerni

Verwandte Themen