Вход Регистрация
Файл: vendor/spatie/laravel-ignition/src/Support/StringComparator.php
Строк: 89
<?php

namespace SpatieLaravelIgnitionSupport;

use 
IlluminateSupportCollection;

class 
StringComparator
{
    
/**
     * @param array<int|string, string> $strings
     * @param string $input
     * @param int $sensitivity
     *
     * @return string|null
     */
    
public static function findClosestMatch(array $strings, string $input, int $sensitivity = 4): ?string
    
{
        
$closestDistance = -1;

        
$closestMatch = null;

        foreach (
$strings as $string) {
            
$levenshteinDistance = levenshtein($input, $string);

            if (
$levenshteinDistance === 0) {
                
$closestMatch = $string;
                
$closestDistance = 0;

                break;
            }

            if (
$levenshteinDistance <= $closestDistance || $closestDistance < 0) {
                
$closestMatch = $string;
                
$closestDistance = $levenshteinDistance;
            }
        }

        if (
$closestDistance <= $sensitivity) {
            return 
$closestMatch;
        }

        return 
null;
    }

    
/**
     * @param array<int, string> $strings
     * @param string $input
     *
     * @return string|null
     */
    
public static function findSimilarText(array $strings, string $input): ?string
    
{
        if (empty(
$strings)) {
            return 
null;
        }

        return 
Collection::make($strings)
            ->
sortByDesc(function (string $string) use ($input) {
                
similar_text($input, $string, $percentage);

                return 
$percentage;
            })
            ->
first();
    }
}
Онлайн: 0
Реклама