• Как средствами PHP найти паттерн в предложении, в котором есть опечатка?

    @rowdyro
    Возможно поможет: убираете пробелы из паттерна и предложения, потом проходитесь по предложению и ищите минимальное расстояние левенштейна по всей строке.

    $pattern = 'Search pattern';
    $sentence = 'Function, what uses searchpatttern';
    
    $pattern = strtolower(str_replace(' ', '',$pattern));
    $sentence = strtolower(str_replace(' ', '', $sentence));
    
    $min = MAX_INT;
    $index = -1;
    for ($i = 0; $i < strlen($sentence) - strlen($pattern); ++$i) {
        $len = levenshtein($pattern, substr($sentence, $i, strlen($pattern) ));
        if ($len < $min) {
           // found
           $min = $len; 
           $index = $i;
        }
    }
    
    if ($min < THRESHOLD) {
     //found pattern at $index
    }
    


    Возможно достаточно убрать пробелы только из паттерна. Незабыть сохранить позиции пробелов, чтобы потом их вернуть на место.
    Ответ написан
    2 комментария