kostenloser Webspace werbefrei: lima-city


MetaTag title auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    juwely

    juwely hat kostenlosen Webspace.

    Hallo

    ich habe eine kleine Funktion um aus einer Webseite den <title> TAG auszulesen
    // --------------------------------------------- 
    
    function get_meta_title($url, $len=1024) { 
    	
    	$handle = fopen($url, 'r');
    	$content = fread($handle, $len);
    	fclose($handle);
    	
    	if ( preg_match("/<title>(.+)<\/title>/siU", $content, $matches)) { 
    			$title = $matches[1];
    		}
    		else { 
    			$title = ''; 
    		}
    	
    	return $title; 
    }
    
    // ---------------------------------------------


    damit nicht die komplette Datei gelesen werden muss, habe ich $len=1024

    jetzt die Frage:
    welcher Wert ist für $len sinnvoll, damit möglichst wenig ausgelesen wird,
    aber (relativ) sicher ist, dass innerhalb dieser Größe der komplette <title> TAG enthalten ist ?!

    oder ist es besser, die $url Zeilen-Weise auszulesen ... fgets() ...
    und sobald die Zeile den <title> TAG enthält, dann das Auslesen "abbrechen" ?

    // --------------------------------------------- 
    
    function get_meta_title2($url, $len=1024) { 
    	
    	$handle = fopen($url, 'r');
    
    	while (($buffer = fgets($handle, $len)) !== false) {
    		if (strstr($buffer, '<title>')) { 
    			if ( preg_match("/<title>(.+)<\/title>/siU", $buffer, $matches)) { 
    				$title = $matches[1];
    			}
    			else { 
    				$title = ''; 
    			}
    			break; 
    		}
    	}
    	
    	fclose($handle);
    
    	return $title; 
    }
    
    // ---------------------------------------------


    wie ist es am schnellsten / besten ?
    ... oder gibt es noch andere (bessere) Methode zum <title> TAG auslesen ... dom ?



    Beitrag zuletzt geändert: 29.11.2012 12:44:43 von juwely
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Also wenn du nur die Meta tags auslesen wilst, gibt es da eine leichtere Lösung.

    $meta_tags = get_meta_tags("url");
    foreach ($meta_tags as $meta => $value) {
     echo $meta.":  ".$value."<br>";
    }


    Mfg.
  4. g****e

    riko-keil schrieb:
    Also wenn du nur die Meta tags auslesen wilst, gibt es da eine leichtere Lösung.

    $meta_tags = get_meta_tags("url");
    foreach ($meta_tags as $meta => $value) {
     echo $meta.":  ".$value."<br>";
    }


    Mfg.

    Damit kannst du nur den TitleTag nicht auslesen, sondern wirklich nur Metadaten...

    Warum möchtest du denn nicht alles lesen? Deine Funktion sollte so funktionieren, aber du könntest an sich schon alles lesen. Ich würde mal behaupten, ob du 1kb oder 5kb liest ist kein kritischer Unterschied, schon garnicht Zeitlich, denn ich glaub 5kb müsste sogar in 1 Packet passen? Bin ich unsicher, egal: Alles lesen ist an sich nicht weiter schlimm, da du nur den Text des Dokumentes liest, das du brauchst, und keine JS files oder CSS files dazu lädst, oder bilder, ist der Traffic doch eher gering und ausreichend.

    Liebe Grüße
  5. nein, get_meta_tags() geht nicht bei <title> TAG

    damit kann man nur <meta ... /> TAGs auslesen wie z.B.
    <meta name="description" content="Beschreibung der Webseite" />
    <meta name="keywords" content="Internet, Webseite, Homepage" />


    der <title> TAG ist kein <meta ... /> TAG und somit nicht in get_meta_tags() enthalten.
    also ist es dafür schon notwendig den Inhalt anders auszulesen, z.B. mit einem preg_match()

    oder Alternative mit DOM

    $html = file_get_contents($url);
    $doc = new DOMDocument();
    @$doc->loadHTML($html);
    $nodes = $doc->getElementsByTagName('title');
    $title = $nodes->item(0)->nodeValue;


    allerdings weiss ich nicht, ob ma bei DOM immer das gesamte Dokument einlesen muss
    oder ob es dabei auch genügt die ersten z.B. 1024 Zeichen der Webseite einzulesen ...


  6. Es gibt ja auch ein paar Programmierer (oftmals diese Webbaukästen) wo der title Tag erst kurz vorm body tag kommt, dann sind es doch schon reichlich Zeichen, bis man zum Titel der Webseite kommt.

    Bei wenigen Zugriffen ist es unerheblich, ob du eine gesamte Webseite einliest. Rufst du allerdings ein paar mehr in der Minute auf, dann kann es doch schon ins Gewicht fallen.
    Etwas Performance könnte da noch Curl bringen, da ein Curl Zugriff schneller als Fopen ist
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!