so, hier jetzt meine vorläufige final version, mit vergesserter Ergebnisauswertung:
PHP-Code:
<?php
$wortliste = array(
'ARQUES',
'ATP-Turnier',
'Abchasien',
'Abschaltung',
'Ackermann',
'Agrarsubventionen',
'Airline',
'Anixe',
'Annika',
'Atomausstieg',
'Atomenergie',
'Atommeiler',
'Atompolitik',
'Atomstreit',
'Aufenthaltserlaubnis',
'Ausstand',
'Barrot',
'Barth',
'Baur',
'Beiersdorfer',
'Bertha',
'Bischoff',
'Bitkom',
'Bloomberg',
'Borg',
'Brokkoli',
'Bundesnetzagentur',
'Buschkowsky',
'Cadillac',
'Cannes',
'Carolina',
'Carreras',
'Chevrolet',
'Coleman',
'Computerspiele',
'Credit',
'Crouch',
'DVB-T',
'Debitel',
'Deichmann',
'Dmitri Medwedew',
'Donaueschingen',
'EMI',
'EU-Kommissionsprsident',
'EU-Staaten',
'Einwanderung',
'Einwanderungspolitik',
'Ellwangen',
'Elmshorn',
'Elsass',
'Enkelmann',
'Eppler',
'Erdl',
'EreignisErderwrmung',
'Eurosport',
'Eurowings',
'Flamenco',
'Freddie Mac',
'Freiberg',
'Freizgigkeit',
'Fresenius',
'Frontex',
'Funktionre',
'GEMA',
'GWG',
'Gas Natural',
'Generika',
'Gesamtklassement',
'Gnzburg',
'Gontard',
'Hasan',
'Hauptfeld',
'Heckmann',
'Hedge-Fonds',
'Heiligendamm',
'Heisig',
'Hero',
'Hokkaido',
'Holtzbrinck',
'IPO',
'IT-Fitness',
'Icahn',
'Industrienationen',
'Industrieproduktion',
'Insolvenzantrag',
'Islamabad',
'Kabul',
'Karachi',
'Keith Urban',
'Kerkeling',
'Kernenergie',
'Kernkraft',
'Klckner',
'Klimapolitik',
'Klitschko',
'Komax',
'Lennox',
'Lufthansa',
'Madeleine',
'Mao',
'Martin Jol',
'Mauritius',
'Medwedew',
'Microsoft',
'Morrison',
'NBC',
'NBC Universal',
'Nashville',
'Neu-Isenburg',
'Neuwahlen',
'Nielsen',
'Nintendo',
'Nordex',
'Oliver Shanti',
'Online-Banking',
'Organisation',
'Ort',
'Pakt',
'Pamplona',
'Paulo',
'Personalvorstand',
'Pete',
'Piloten',
'Pilotengewerkschaft',
'Pilotenvereinigung',
'PolitikerBarroso',
'Portsmouth',
'Postbank',
'Rafael Nadal',
'Robert Kubica',
'SPOE',
'SPOE-Chef',
'Salzau',
'Schlagwort',
'Seidenberg',
'Selbstmordattentter',
'Siedlungen',
'Sony',
'Sorin',
'Sport',
'Sportchef',
'Sportler',
'Stadtpark',
'Steg',
'Stiglitz',
'Streik',
'Suedindien',
'TNK-BP',
'TUI',
'Tagessieg',
'Tarifkonflikt',
'Thompson',
'Trainer',
'Unesco',
'Vanessa',
'Verlagsgruppe',
'Versptungen',
'Verwaltungsrat',
'Volksabstimmungen',
'Wedeler',
'Wissenschaftsrat',
'Won',
'Yang',
'Zeitfahren'
);
define('PUNKTE_FÜR_PASSENDE_LÄNGE', +3);
define('PUNKTE_FÜR_NICHT_PASSENDE_LÄNGE_PRO_ZEICHEN', -1);
define('PUNKTE_FÜR_ERSTEN_BUCHSTABEN_PASSEND', +2);
define('PUNKTE_FÜR_ERSTEN_BUCHSTABEN_NICHT_PASSEND', -2);
define('PUNKTE_PRO_GLEICHES_ZEICHEN', +1);
define('PUNKTE_HOCH_GLEICHE_ZEICHEN', +2);
define('GROß_KLEIN_SCHREIBUNG_IGNORIEREN', true);
define('SHOW_LIST', false);
$search = $_REQUEST['search'];
if (strlen($search) > 0) {
$match = array();
if (GROß_KLEIN_SCHREIBUNG_IGNORIEREN) {
$search = strtolower($search);
}
for ($i = 0; $i < count($wortliste); $i++) {
$match[$i] = array (
'probability' => 0,
'word' => $wortliste[$i]);
if (GROß_KLEIN_SCHREIBUNG_IGNORIEREN) {
$match[$i]['word2'] = strtolower($match[$i]['word']);
} else {
$match[$i]['word2'] = $match[$i]['word'];
}
if ($match[$i]['word2'][0] == $search[0]) {
$match[$i]['probability'] += PUNKTE_FÜR_ERSTEN_BUCHSTABEN_PASSEND;
$match[$i]['pfl'] = PUNKTE_FÜR_ERSTEN_BUCHSTABEN_PASSEND;
} else {
$match[$i]['probability'] += PUNKTE_FÜR_ERSTEN_BUCHSTABEN_NICHT_PASSEND;
$match[$i]['pfl'] = PUNKTE_FÜR_ERSTEN_BUCHSTABEN_NICHT_PASSEND;
}
$difflen = abs(strlen($search)-strlen($match[$i]['word2']));
if ($difflen == 0) {
$match[$i]['probability'] += PUNKTE_FÜR_PASSENDE_LÄNGE;
$match[$i]['ple'] = PUNKTE_FÜR_PASSENDE_LÄNGE;
} else {
$match[$i]['probability'] += $difflen*PUNKTE_FÜR_NICHT_PASSENDE_LÄNGE_PRO_ZEICHEN;
$match[$i]['ple'] = $difflen*PUNKTE_FÜR_NICHT_PASSENDE_LÄNGE_PRO_ZEICHEN;
}
for ($a = 0; $a < strlen($search); $a++) {
for ($b = 1; $b < (strlen($search)-$a+1); $b++) {
$tpsc = pow(eregi(substr($search, $a, $b), $match[$i]['word2'])*$b*
PUNKTE_PRO_GLEICHES_ZEICHEN, PUNKTE_HOCH_GLEICHE_ZEICHEN);
$match[$i]['probability'] += $tpsc;
$match[$i]['psc'][] = $tpsc;
$match[$i]['psc']['ges'] += $tpsc;
}
}
$max = 0;
for ($a = 0; $a < strlen($match[$i]['word2']); $a++) {
for ($b = 1; $b < (strlen($match[$i]['word2'])-$a+1); $b++) {
$max += pow(eregi(substr($match[$i]['word2'], $a, $b), $match[$i]['word2'])*$b*
PUNKTE_PRO_GLEICHES_ZEICHEN, PUNKTE_HOCH_GLEICHE_ZEICHEN);
}
}
$max += 2;
$match[$i]['wahrscheinlichkeit'] = $match[$i]['probability'] / $max;
}
function sortit($wert_a, $wert_b)
{
$a = $wert_a['probability'];
$b = $wert_b['probability'];
if ($a == $b) {
return 0;
}
return ($a < $b) ? +1 : -1;
}
uasort($match, 'sortit');
foreach ($match as $m) {
$newarr[] = $m;
}
if ($search == $newarr[0]['word2']) {
echo "<span style='font-family: Courier New; font-size: 12px;'>Das Wort steht in der Liste ;-)</span>";
} else {
if (GROß_KLEIN_SCHREIBUNG_IGNORIEREN) {
$ignore = 'JA';
} else {
$ignore = 'NEIN';
}
$all = 0;
foreach ($newarr[0]['psc'] as $psc) {
$all += $psc;
}
echo "
<span style='font-family: Courier New; font-size: 12px;'>
Eingabe: \"<i>".$search."</i>\", meintest du: \"<i>".$newarr[0]['word']."</i>\" [".
round($newarr[0]['wahrscheinlichkeit']*100, 2).
"%]<br><br><u>Info:</u> <br>Groß-Klein-Schreibung ignorieren: ".$ignore."<br/>Punkte gesamt: ".
$newarr[0]['probability']." <br/>Punkte Anfangsbuchstabe: ".$newarr[0]['pfl']."<br/>Punkte Länge: ".
$newarr[0]['ple']."<br/>Punkte Gleiche Zeichen: ".$newarr[0]['psc']['ges'].
"<br/>Gleiche Zeichenketten gefunden: ".
count($newarr[0]['psc'])."<br/>Durchschnittslänge Übereinstimmender Strings: ".
round(sqrt($all / (count($newarr[0]['psc']))))."<br/></span>";
if (SHOW_LIST) {
echo "<br><table border='1'>
<tr>
<th>Wort</th>
<th>Punkte (Gesamt)</th>
<th>Erster Buchstabe</th>
<th>Stringlen</th>
<th>Gleiche Buchstaben</th>
</tr>";
foreach ($newarr as $m) {
echo "<tr>
<td>".$m['word']."</td>
<td>".$m['probability']."</td>
<td>".$m['pfl']."</td>
<td>".$m['ple']."</td>
<td>".$m['psc']['ges']."</td>
</tr>";
}
}
echo "</table>";
}
} else {
echo "<span style='font-family: Courier New; font-size: 12px;'>Du musst schon was eingeben...</span>";
}
?>
Kommentar