Keyword in Linktexten von ausgehenden Links überprüfen

tina33333

Mitglied
Hallo, liebes Forum!

Muss eine Funktion schreiben, welches überprüft, ob sich Keywords in den Linktexten befinden. Spiele schon seit geraumer Zeit an diesem Code herum, mit dem Fazit, dass ich immer verwirrter werde. Als Endergebnis spuckt das Programm immer aus, dass keine Keywords drinnen sind, obwohl bei ein paar Links sehr wohl welche angeführt sind. Sobald ein Treffer erzielt wird, sollte das Programm True ausgeben.
Vielleicht hat wer von Euch eine Lösung?

PHP:
$url="http://www.booking.com/hotel/at/hotelalmhof.en.html";
$content = @file_get_contents($url);

$keyword="Hotel";

	echo research18($url, $content, $keyword);
		
function research18($url,$content,$keyword) {

preg_match_all('/<a\s[^>]*href=(\"****)(http[^\" >]*?)\\1[^>]*>(.*)<\/a>/siU', $content, $treffer);
echo "<pre>";
#print_r( $treffer);
#print_r($treffer[3]); //soll Linktexte wiedergeben
#print_r($treffer[2]); //soll alle verlinkten URLs anzeigen

	  $parse = parse_url($url);
          $domain=$parse['host']; //gibt Domain aus.
		#echo $domain;

	  $nr=0;
	foreach ($treffer[2] as $string) {
        if (stripos($string,$domain)===false) {
         echo $string . "|". $treffer[3][$nr]."<br />";
	  }
	  $nr=$nr+1;
	  	
	 $enthalten=false; // variable, merkt sich, ob Wert enthalten ist. 
		if (stripos($treffer[3][$nr], $keyword)) {
		echo "<br />";
		echo "Keyword ist im Linktext enthalten";
		echo "<br />";
		$enthalten=true;
		return 1;
		
		}
		else {
		echo "Keyword NICHT im Linktext vorhanden";
		return 0;
		}
	}
		
	

}



?>
 
PHP:
<?php

$url = "http://www.booking.com/hotel/at/hotelalmhof.en.html";
$keyword = "Hotel";

var_dump(containKeyword($url, $keyword));


function containKeyword($url, $keyword, $tag = 'a')
{
	libxml_use_internal_errors(true); // Don't display validation errors
	
	$doc = new DOMDocument();
	$doc->loadHTMLFile($url); // Get the contents
	
	$found = 0;
	
	$elements = $doc->getElementsByTagName($tag);
	foreach ($elements as $element) {
		if (strpos(strtolower($element->nodeValue), strtolower($keyword)))
			$found++;
	}
	
	return $found;
}

Code:
int(6)
 
Was spricht gegen ein simples:

PHP:
$url = "http://www.booking.com/hotel/at/hotelalmhof.en.html";
$keyword = "Hotel";

var_dump(strpos(strtolower($keyword),strtolower($url)));
?

Das würder FALSE ausgeben, wenn das Keyword nicht drin ist und sonst was ab 0+
 
Ach sorry, ich habe übersehen, dass die HTML-Seite ausgelesen wird.
Ich dachte der Link ist der Text in dem gesucht wird... Mein Fehler
 
Hi Alxy,
herzlichen Dank für die rasche Antwort. Eine Frage noch: gäbe es auch eine Möglichkeit, diese Problem ohne "Dom" zu lösen?
Danke im Voraus und liebe Grüße
Tina
 
Ja, wenn du dich mit regexen rumschlagen willst...
Die Funktion gehört aber zum PHP Standardfunktionsumfang, falls du Angst wegen Nichtverfügbarkeit hast.

edit// Dafür ist wohl Yaslaw Experte, den konnte ich grade erst zu DOM konvertieren :D
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück