Hier ist erstmal der Code des Metatagscriptes:
Also:
Als erstes werden mal Standartzeichen entfernt um wirklich jedes Wort mitzunehmen. Da es sich nur um Text handelt muss kein strip_tags ausgeführt werden. --> dazu kommt dann gleich noch ne Frage!
Als nächstes wird der Text mittels explode getrennt, so dass einzelne Wörter im Array stehen, dieser wird noch sortiert, damit gleiche Wörter hinterinander stehen.
Eine Badwordliste gibt es auch, die Standartbegriffe filtert (muss noch erweitert werden)
Dann wird jedes einzelne Wort geprüft ob es in der Badwordliste steht und ob es im Array schonmal vorkommt, wenn ja wird einfach die Anzahl um eins erhöht, ansonsten wird es in einen neuen Array geschrieben.
Jetzt haben wir schon mal keine Dopplungen mehr. Der Array wird sortiert und dann wird eine Keywordliste getrennt noch Komma erstellt und die Keywords auf 1000 Zeichen reduziert.
Fertig.
Habt Ihr noch Verbesserungsvorschläge, was Performance und Länge des Codes betrifft und die nächste Frage wäre gleich noch wie kann man alle HTML Tags entfernen und ein Leerzeichen einfügen, denn mit der Standartfunktion werden die Tags entfernt und dadurch stehen dann die Wörter, gerade bei Tabellen ohne Leerzeichen aneinander da und können nicht korrekt verarbeitet werden.
Gruß
Melzi
PHP:
<?php
$mtext = strip_tags ($mtext);
$mtext = str_replace ( ".", "", $mtext );
$mtext = str_replace ( ":", "", $mtext );
$mtext = str_replace ( ",", "", $mtext );
$mtext = str_replace ( ";", "", $mtext );
$mtext = str_replace ( "!", "", $mtext );
$mtext = str_replace ( "?", "", $mtext );
$mtext = str_replace ( "²", "", $mtext );
$mtext = str_replace ( "&", "", $mtext );
$meta = explode ( " ", $mtext);
sort ( $meta );
$anz_woerter = count ( $meta );
$pos = 0;
$badwords = array ( "der", "die", "das", "wie", "wo", "wann", "ein", "all", "alle",
"alles", "dein", "den", "eine", "hin", "ist", "mit", "viel", "mehr",
"wenig", "hier", "ihre", "seine", "sein", "werden", "war", "wird",
"will", "muss", "müssen", "können", "kann", "könnte", "deine",
"fein", "feine", "finden", "findet", "gefunden", "kommen", "kam",
"von", "co", "seinen", "wer", "was", "als", "ich", "du", "er", "sie",
"es", "wir", "ihr", "und", "oder", "aber", "zu", "zum", "zur");
while ( $pos != $anz_woerter )
{
$add = TRUE;
if ( $meta[$pos] != "" )
{
for ( $i = 0; $i < count ( $badwords ); $i++ )
{
if ( strtolower ( $badwords[$i] ) == strtolower ( $meta[$pos] ) )
{
$add = FALSE;
}
}
if ( $meta[$pos] != $meta[$pos-1] && $add == TRUE )
{
$keys[wort][] = $meta[$pos];
$keys[zahl][] = 1;
} else if ( $add == TRUE )
{
$keys[zahl][count($keys[zahl])-1]++;
}
}
$pos++;
}
@array_multisort ( $keys[zahl], SORT_DESC, $keys[wort]);
for ( $i = 0; $i < count ( $keys[wort] ); $i++ )
{
$key.= $keys[wort][$i];
if ( $i < count ( $keys[wort] ) - 1 )
$key.= ", ";
}
$key = substr($key,0,1000);
?>
Also:
Als erstes werden mal Standartzeichen entfernt um wirklich jedes Wort mitzunehmen. Da es sich nur um Text handelt muss kein strip_tags ausgeführt werden. --> dazu kommt dann gleich noch ne Frage!
Als nächstes wird der Text mittels explode getrennt, so dass einzelne Wörter im Array stehen, dieser wird noch sortiert, damit gleiche Wörter hinterinander stehen.
Eine Badwordliste gibt es auch, die Standartbegriffe filtert (muss noch erweitert werden)
Dann wird jedes einzelne Wort geprüft ob es in der Badwordliste steht und ob es im Array schonmal vorkommt, wenn ja wird einfach die Anzahl um eins erhöht, ansonsten wird es in einen neuen Array geschrieben.
Jetzt haben wir schon mal keine Dopplungen mehr. Der Array wird sortiert und dann wird eine Keywordliste getrennt noch Komma erstellt und die Keywords auf 1000 Zeichen reduziert.
Fertig.
Habt Ihr noch Verbesserungsvorschläge, was Performance und Länge des Codes betrifft und die nächste Frage wäre gleich noch wie kann man alle HTML Tags entfernen und ein Leerzeichen einfügen, denn mit der Standartfunktion werden die Tags entfernt und dadurch stehen dann die Wörter, gerade bei Tabellen ohne Leerzeichen aneinander da und können nicht korrekt verarbeitet werden.
Gruß
Melzi
Zuletzt bearbeitet: