Zählen Wörter auf einer html-Seite mit php
Ich brauche ein PHP-Skript, das eine URL einer web-Seite und dann Echos, wie oft ein Wort genannt wird.
Beispiel
Dies ist eine generische HTML-Seite:
<html>
<body>
<h1> This is the title </h1>
<p> some description text here, <b>this</b> is a word. </p>
</body>
</html>
Dies wird das PHP-Skript:
<?php
htmlurl="generichtml.com";
the script here
echo(result);
?>
Also die Ausgabe wird eine Tabelle wie diese:
WORDS Mentions
This 2
is 2
the 1
title 1
some 1
description 1
text 1
a 1
word 1
Dies ist so etwas wie die Suche bots tun, wenn Sie im web surfen, so, keine Ahnung, wie zu beginnen, oder noch besser, Sie haben ein PHP-script, das bereits tut?
InformationsquelleAutor DomingoSL | 2010-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den eine Zeile unterhalb wird eine groß-und Kleinschreibung word count nach dem Strippen alle HTML-tags aus Strings.
Live Beispiel
Greifen den source-code einer Seite, die Sie verwenden können, cURL oder file_get_contents()
Von innen heraus:
1
gibt ein array mit allen gefundenen Wörter innerhalb der Zeichenfolge.jetzt funktioniert es
+1 ich würde noch ein
strtolower()
dort auch.Danke, gute Idee.
Live-Beispiel mit deinem code Beispiel - codepad.org/7YJGYBVt
InformationsquelleAutor Peter Ajtai
Die unterhalb der Skript liest den Inhalt des remote-url, entfernen Sie die html-tags, und zählen der vorkommen jedes eindeutige Wort darin.
VORBEHALT: In dem erwarteten Ausgang, "Dieser" hat einen Wert von 2, aber der unten ist case-sensitive, also sowohl "das" und "Dieses" sind, werden als separate Wörter auf. Sie konnte die Konvertierung der ganzen Eingabe-string, der untere Fall vor der Verarbeitung, wenn der ursprüngliche Fall ist nicht von Bedeutung für Ihre Zwecke.
Zusätzlich, als nur eine basic-Funktion strip_tags ist der run auf die input -, mal-gebildet-tags werden nicht entfernt, so ist die Annahme, dass Ihre html-Quelle gültig ist.
Edit: Charlie weist in den Kommentaren, dass Dinge wie die
head
Abschnitt wird noch gezählt werden. Mit Hilfe einer Funktion definiert, in der Notizen von der Funktion strip_tags, diese sind auch jetzt erledigt.generichtml.com
parser.php
?>
Ausgabe:
Wenn Sie die regExpressions nicht gültig html-code analysiert werden könnte 😉 Satzzeichen ist immer noch ein problem
Bitte don ' T parse HTML mit regulären Ausdrücken.
btw, strip_tags() (die Sie verwenden) bereits entfernt mehrzeiligen HTML-Kommentare und CDATA - codepad.org/gpdden0T php.net/manual/en/function.strip-tags.php .
InformationsquelleAutor ConroyP
Den vorherigen code ist ein Punkt, wo beginnen. Der nächste Schritt ist das löschen von html-tags mit regulären Ausdrücken. Suchen ereg und eregi-Funktionen. Einige andere tricks, die erforderlich sind für die style-und script-tags (Sie haben den Inhalt zu löschen)
Punkte und Kommas entfernt werden müssen, zu...
ereg
's veraltet und, zu beginnen, regexes sind kein adäquates Werkzeug für die Analyse von beliebigen HTML.Wie kann regulären Ausdruck als veraltet, wenn Sie es von perl O. O?
Antworten sind nicht immer in chronologischer Reihenfolge auf, SO
previous code
ist nicht sehr hilfreich. Ein url-link (jede Antwort ist ein einmalige) oder den Autor der Referenz ist besser.Reguläre Ausdrücke noch nicht veraltet, nur der ereg-Erweiterung. Verwenden PCRE statt (die
preg_
Funktion der Familie).Ah ok 🙂 verstehe ich das falsch
InformationsquelleAutor Charlie
Dass ist mein code für die Zählung der Wörter mit html-tags:
InformationsquelleAutor Adil YILDIZ
Dies ist eine komplexe Aufgabe, die Sie sollten nicht versuchen, auf eigene Faust.
Müssen Sie zum extrahieren von text, der nicht Teil des tags/Kommentare und nicht ein Kind für Elemente wie
script
undstyle
. Für diese, benötigen Sie auch einen lax HTML-parser (wie die Umsetzung in libxml2 verwendet und inDOMDocument
.Dann müssen Sie die tokenisierung der text, der präsentiert seine eigenen Herausforderungen. Schließlich würde man daran interessiert, irgendeine form von Wortstamm bevor Sie zur Auszählung der Begriffe.
Ich empfehle, verwenden Sie spezielle tools für diese. Ich habe nicht diesen, aber man kann versuchen HTMLParser für die Analyse und Lucene für die übersetzung in Token/stemming (der Zweck von Lucene ist Text-Retrieval, aber diese Operationen sind notwendig für den Aufbau des index).
Es gibt so viele Dinge, die fehlen... Umgang mit Codierungen, die nicht ASCII, richtigen Umgang mit HTML (ich konnte einfach erstellen Sie ein HTML-Dokument mit einer Bibel Transkription ergeben würde ihm keine Worte oder Haftung für seinen code), ist eine korrekte tokenisierung (
str_word_count
ist sehr einfach und nur mit ASCII), stemmer, ...Ein stemmer? Faust, warum fügen Sie einen stemmer, die nicht in der Lage sein zu finden die Wurzeln aller Sprachen? (was ist der Zweck? Die ursprüngliche Frage für eine einfache HTML-parser, nicht eine Sprache analyzer)
Sie können Wortstammerkennung für mehrere Sprachen. Die OP dind nicht sagen, dass er will, Wortstamm, aber es ist legitim, zu denken, er will, das esp, da es bereits in irgendeiner form der Begriff Normalisierung in seiner Frage ("Diese" und "dieses" sind gezählt, als der gleiche). Und ich nehme an, Sie zugeben, dass die anderen Punkte...
Ja, meine Zweifel sind immer noch auf der stemmer. Sie die Italiener auf der Liste, die Sie signalisiert nicht richtig passen, um 30% der italienischen Wörtern und den Wortschatz, den es enthält, ist nur die 1% der italienischen Worten (ich bin kein Scherz). Martin Porter geschrieben hat, ein Algorithmus gut Englisch (vielleicht), aber nicht gut für andere, komplexere Sprachen.
InformationsquelleAutor Artefacto