Нужно для работы скрипт написать, от части понятно, но от части немогу всё в единое целое собрать, смысл вот в чем: нужно заменить и записать слово с всевозможными опечатками которые могут возникнуть при "слепой" печати на клаве. Вот как этот скрипт работает seo2web.ru С алгоритмом немогу полностью сообразить, т.к. пхп изучаю довольно недавно.
Из того, что я увидел по ссылке выше, то варианты алгоритма следующие: - "съесть" последовательно каждый символ в запросе; - продублировать каждый символ в запросе дважды; - переставить соседние символы местами; - заменить символ на соседний по клавиатуре; - дальше изучать не стал... Если есть проблемы с реализацией, то просьба задавать конкретные вопросы, но прежде прочитать это http://php.net/manual/en/ref.strings.html
меня только интересует смена местами и замена одних букв на те которые возможны при слепой печати. Тут посути, как оно в моем представлении. Допустим у меня файл в нем десять строк в каждой строке по несколько словосочетаний. Я заставляю читать скрипт построччно, прочитали первую строку, разбили ее в массив по буквам. И тут я стопорюсь. Так то сам процес понятен, меняем первую букву на возможные ошибки, после каждой ошибки записываем полученное в файл, вот к примеру у меня для буквы Z есть 10 возможных ошибок Z a s x zz za az zs sz xz zx т.е. к примеру взял слово ZOO получается только по первой букве 10 слов aoo soo xoo zzoo zaoo azoo zsoo szoo zxoo xzoo потом переходим к следеющей букве и т.д.
Написал на быструю руку следующий код для перестановки символов в строке PHP: <?php error_reporting(E_ALL); $string = 'Hello, World!'; $lengthOfString = strlen($string); // количество вариантов будет равно количеству символов в строке for($i = 0; $i < $lengthOfString; $i++){ // обработанная строка $newString = ''; // времення копия исходной строки $stringTemp = $string; for($j = 0; $j < $lengthOfString; $j++){ // если позиция текущего символа в строке не равна номеру варианта текущего варианта, то символы не переставляем местами, иначе то, что в else if ($j != $i || !isset($stringTemp[$j + 1])) { $newString .= $stringTemp[$j]; } else { $newString .= $stringTemp[$j + 1]; $stringTemp[$j + 1] = $stringTemp[$j]; } } // вывод обработанной строки echo ($i + 1) . '. ' . $newString . '<br />'; } , результатом будет . Аналогично можно реализовать все остальные варианты, которые используются...
Alex_ST тут вопрос больше не в пхп, а в алгоритме. реализация поиска ближайшего слова - это очень давняя задача, которая имеет множество решений, ни одно из которых нельзя назвать идеальным. погугли "поиск опечаток, n-граммный поиск, триграммный индекс, нечёткий поиск" и т.д... как пример, ссылка на статью в хабре http://habrahabr.ru/blogs/algorithm/123320/
большое спасибо. Пару идей в голове появилось, сейчас накидаю на бумаге, а завтра потестирую . Еще раз спасибо!