Länge des Contents ermitteln

tina33333

Mitglied
Liebes Forum,

brauche wieder mal dringend euren Rat:
Habe versucht, ein Programm zu schreiben, welches die Länge des Contents einer Website ermitteln soll. Die Funktion sieht so aus:

<?php

$urls="http://www.sporta-huette.at";
echo @research($urls, $contents, $keywords);

function research ($url,$content,$keyword) {
$quelltext = file_get_contents($url);
return strlen($quelltext);
}
?>

Es kommt auch ein Ergebnis heraus, allerdings stimmt dieses nicht :(.
Vielleicht hat wer Tipps für mich, wie ich diesen Code korrigieren kann?
LG
Tina
 
Bist du dir scher, dass das Ergebnis nicht stimmt? Denn du liest auch die ganzen HTML Tags mit aus und strlen zählt die Zeichen!

Sehe ich das richtig, dass du nur die Zeichen des Textes:

Zu jeder Jahreszeit... bis und Spaß.

Zählen willst?
 
Auf php.net gibt es ein Beispiel was zwar nicht perfekt ist, dir aber ein Ergebnis leifert welches viel näher dem entspricht was du wohl suchst.

PHP:
<?php
function html2txt($document){

$search = array(
    '@<script[^>]*?>.*?</script>@si',    // Strip out javascript
    '@<[\/\!]*?[^<>]*?>@si',    // Strip out HTML tags
    '@<style[^>]*?>.*?</style>@siU',    // Strip style tags properly
    '@<![\s\S]*?--[ \t\n\r]*>@'    // Strip multi-line comments including CDATA
);
$text = preg_replace($search, '', $document);

echo $text;
echo "<br /><br /><br />";

return strlen($text);
}


$url = "http://www.sporta-huette.at";
$document = file_get_contents($url);

echo html2txt($document);

?>
 
Danke für die rasche Antwort! Meine Aufgabe wäre es eigentlich die Länge des gesamten Contents auszugeben und ich dachte mir, dass dieses Programm diese Aufgabe erfüllen würde. Ich hab dann zur Kontrolle alles Seiten der Website in ein Worddokument gespeichert und dann die Caracteranzahl gelesen, aber das ergab eine weitaus höhere Anzahl, als das Ergebnis des Programms. Bin jetzt vollkommen verwirrt. Weil wenn jetzt die HTML Tags auch noch dabei sind, müsste ja das Programm dann eine weit höhere Anzahl an Chars ausweisen?
Gibt es eine Möglichkeit die html Tags wegzufiltern.
Viele Fragen..., ist schon sehr kompliziert das php :-(

Vielen Dank, Tombe!!
Bei Sporta-Hütte hat es annähernd gepasst. Habe aber jetzt den Test bei http://www.almhof-kirchberg.com
gemacht. Als Ergebnis liefert das Programm 7959 Zeichen. Wenn ich den Content dann ins Word kopiere und die Zeichenanzahl anschaue, kommt ein Ergebnis von nur 2838 heraus..
Was kann da die Ursache sein?
 
Lass dir doch mal ausgeben aus welchem Text die 2838 bzw. 7959 Zeichen ermittelt werden.

Aber ganz davon abgesehen was möchtest du mit dieser Funktion generell ermitteln?

Nicht das du womöglich mit get_meta_tags alles das geliefert kriegst was du eigentlich suchst.

PHP:
$meta = get_meta_tags("http://www.sporta-huette.at");

echo $meta["keywords"];

Liefert als Ergebnis:

Skifahren, Boarden, Wandern, Ferienhütte, Selbstversorgerhütte, Familienurlaub, Mühlbach, Hochkönig, Salzburger Land, Geocachen, Gruppenreise, Gruppenunterkunft, Skigebiet, Ski Amadé, Jugendgruppen, Vereinsausflug, Alpintouren, Klettern, Bergsteigen, Funpark Livingroom
 
Zuletzt bearbeitet:
... Als Ergebnis liefert das Programm 7959 Zeichen. Wenn ich den Content dann ins Word kopiere und die Zeichenanzahl anschaue, kommt ein Ergebnis von nur 2838 heraus..
Was kann da die Ursache sein?
Hallo,

es wird wohl daran liegen, dass oben gezeigtes Script jede Menge Leerraum liefert. Vermutlich wird der mit einem Textverarbeitungsprogramm getrimmt.
 
Keine Ahnung ob du Javascrit einsetzen kannst.

Javascript:
<script language="javascript" type="text/javascript">
function test() {
document.getElementById("content").innerText = document.getElementById("html").innerText;
}

</script>

HTML:
<body  onload="test()">
<h3>ORIGINAL</h3>
	<div id="html" style="border: 1px solid; padding: 10px;"><?php echo file_get_contents("http://www.sporta-huette.at"); ?></div>
<h3>CONTENT</h3>
	<div id="content" style="border: 1px solid; padding: 10px;"></div>
</body>

Im ersten DIV-Container wird der komplette Inhalt der Seite inklusive HTML Anweisungen geladen und mit Hilfe von Javascript wird dann daraus der reine Text.
 
Hi Tombe.
Metatags brauche ich nicht, nur die Länge des Contents. Und ich soll alles mit php machen.
Vielen Dank nochmals, deine Hilfe ist sehr wertvoll!

Liebe Grüße
Tina

Hi Hela,
danke für deinen Tipp. Wahrscheinlich gibt es da nicht die perfekte Lösung oder gibt es da auch was, um dem Programm zu sagen, dass es den Leerraum nicht mitzählt?
LG
Tina
 
Nein, es gibt keine perfekte oder gemeingültige Lösung:
Du müsstest für dich mal festlegen
  • aus welchen HTML-Elementen dein "Content" überhaupt besteht, d.h. in welchen HTML-Elementen gezählt werden soll
  • welche Zeichen und Zeichenkombinationen deiner Meinung nach zum Leerraum gehören und nicht mitgezählt werden sollen
 
Hi Hela,
wahrscheinlich ist es dann das Beste, wenn ich den Vorschlag von Tombe übernehme, der funktioniert ganz gut und wenn es das perfekte Ergebnis nicht gibt, dann ist das wahrscheinlich die optimale Lösung.
Vielen Dank nochmal!
 
Zurück