На самом деле то, что делает Google, очень нетривиально и также сначала парадоксально. Они не делают ничего как проверка по сравнению со словарем, а скорее они используют статистику для идентификации "подобных" запросов, которые возвратили больше результатов, чем запрос, точный алгоритм не, конечно, известен.
существуют различные подпроблемы решить здесь как фундаментальное основание для всей статистики Обработки естественного языка, связанной существует у, нужно быть книга: Основа статистической обработки естественного языка .
Конкретно для решения проблемы подобия слова/запроса у меня были хорошие результаты с использованием Расстояние Редактирования , математическая мера строкового подобия, которое работает удивительно хорошо. Я раньше использовал Levenshtein, но другие может стоить изучить.
Soundex - по моему опыту - является дерьмом.
На самом деле эффективно хранение и поиск большого словаря слов с ошибками и наличия sub второе извлечение снова нетривиальны, Ваш лучший выбор состоит в том, чтобы использовать существующее полнотекстовое индексирование и поисковые системы (т.е. не Ваша база данных одна), которых Lucene в настоящее время является одним из лучших и по совпадению портированный ко многим много платформ.
Создайте класс - вы можете объявить $ two как поле экземпляра, которое будет доступно для всех методов экземпляра:
class Blah {
private $two;
public function foo($one, $two){
this->$two = $two;
bar($one);
}
public function bar($one){
echo $one;
// How do I access $two from the parent function scope?
this->$two;
}
}
Грубый способ - экспортировать это в глобальную область, например:
<?php
function foo($one, $two){
global $g_two;
$g_two = $two;
bar($one);
}
function bar($one){
global $g_two;
echo $g_two;
echo $one;
//How do I access $two from the parent function scope?
}
?>