args); if(empty($args)) { return new BotMsg('Funkcja synonimy wymaga argumentu.
' . '
'."\n" . 'Przykłady:
'."\n" . 'synonimy abecadło
'."\n" . 'synonimy wyspa'); } $args = funcs::utfToAscii($args); $fp = fopen('./data/synonimy/thesaurus.res', 'r'); list($rows, $len) = explode('x', trim(fgets($fp, 50))); $start = ftell($fp); $l = 0; $p = $rows-1; while($l<$p) { //echo 'L: '.$l.' - P: '.$p."\n"; $s = floor(($l+$p)/2); $poz = $start + ($s*$len); fseek($fp, $poz); $line = fread($fp, $len); $word = strtok($line, ';'); $cmp = strcmp($word, $args); if($cmp >= 0) { //echo 'Right'."\n"; $p = $s; } else { //echo 'Left'."\n"; $l = $s+1; } } $poz = $start + ($l*$len); fseek($fp, $poz); $i = 1; $return = ''; while(TRUE) { $line = fread($fp, $len); $word = strtok($line, ';'); if($word != $args) break; $return .= '
'."\n".($i++).'. '.htmlspecialchars(rtrim(substr(strstr($line, ';'), 1))); } if(!empty($return)) { return new BotMsg('Znalezione synonimy:'.$return); } else { return new BotMsg('Nie znaleziono synonimów podanego słowa'); } } } ?>