Hallo Jörg,
als erster Ansatz hier meine Funktion zur Generierung der Keywords. Du kannst auch den umgekehrten Weg gehen in dem du in der Textdatei (stopwords_de) nur die Wörter aufzählst, die du verlinken möchtest. Dann hättest du den ersten Schritt getan.
Dem aufmerksamen Leser wird die Funktion mb_internal_encoding("UTF-8"); auffallen...
Eigentlich geht man davon aus, wenn in der core.php utf-8 steht, das CakePHP komplett mit utf-8 arbeitet. Dem ist aber nicht so. Das betrifft wohl nur die Datenbankverbindung.
Mark hatte dazu wohl auch mal ein Ticket offen (fand ich bei meiner Recherche) und vor kurzem hatte jemand auch das Problem in der Mail-Funktion.
Ciao Thomas
- Code: Alles auswählen
function _getKeywords
($words) { $nMinLength = 0; $i = 0; $svKeywords = ''; $saStopwords = array(); if(Configure
::read('Settings.MINKEYLENGTH') == null){ Configure
::write('Settings.MINKEYLENGTH', '4'); } $nMinLength = Configure
::read('Settings.MINKEYLENGTH'); $file = new File(CONFIGS
. DS
. 'stopwords_de.txt'); if($file->exists()) { $file->open('r',false); $svStopwords = $file->read(); $svStopwords = strtolower($svStopwords); $words = strtolower($words); $saStopwords = explode(',', $svStopwords); $svCleanwords = preg_replace('/[^a-zA-Z-äöüÄÜÖß \/]/i','',$words); mb_internal_encoding("UTF-8"); $svCleanwords = mb_strtolower($svCleanwords); $saCleanwords = explode(' ', $svCleanwords); foreach($saCleanwords as $word) { $i++; if (strlen($word) > $nMinLength) { if (!in_array($word, $saStopwords)) { $svKeywords = $svKeywords . $word . ','; } } if ($i > 50) break; } } return $svKeywords; }