PHP Levenshtein -funksjon

PHP Levenshtein -funksjon
Levenshtein -avstanden beregnes ved å telle det totale antallet tegn som kreves for å endre en streng ved å sette inn, oppdatere eller slette ett eller flere tegn for å få en annen streng. PHP har en innebygd funksjon som heter Levenshtein () for å beregne Levenshtein-avstanden mellom to strenger ved å sammenligne strengene. Denne funksjonen sammenligner strengverdiene på en saksfølsom måte. PHP har en annen funksjon som heter lignende_text () for å gjøre den samme oppgaven, men Levenshtein () -funksjonen returnerer mer nøyaktige resultater og fungerer raskere. De forskjellige bruken av Levenshtein () -funksjonen vises i denne opplæringen.

Syntaks:
Int Levenshtein (String $ String1, String $ String2, int $ insertion_cost = 1, int $ erstatning_cost = 1,
int $ deletion_cost = 1)

Denne funksjonen har fem argumenter. De første og andre argumentene er obligatoriske og de andre fem argumentene er valgfrie. Formålene med disse fem argumentene er beskrevet i følgende:

  • $ streng1: Den inneholder den første strengen som sammenlignes med det andre argumentet.
  • $ String2: Den inneholder den andre strengen som sammenlignes med det første argumentet.
  • $ insertion_cost: den inneholder kostnaden for innsetting.
  • $ erstatning_cost: Den inneholder kostnadene for erstatning.
  • $ Deletion_cost: Den inneholder kostnadene for sletting.

Denne funksjonen returnerer Levenshtein -avstanden mellom den første og andre argumentverdiene for funksjonen. Hvis det totale antallet tegn på strengene er mer enn 255, returnerer funksjonen -1.

Ulike eksempler på Levenshtein () -funksjonen

De forskjellige bruken av Levenshtein () -funksjonen vises i denne delen av opplæringen ved hjelp av flere eksempler.

Eksempel 1: Sammenlign to strenger av et enkelt ord

Lag en PHP -fil med følgende skript som beregner Levenshtein -avstanden mellom to enkeltord ved bruk av Levenshtein () -funksjonen. Verdien av Levenshtein -avstanden skrives ut senere.

// definere den første strengen
$ str1 = 'tull';
// definere den andre strengen
$ str2 = 'følelse';
// Beregn Levenshtein -avstanden
ekko "

Levenshtein -avstanden er ".Levenshtein ($ str1, $ str2).""

";
?>

Produksjon:

Følgende utgang vises etter å ha utført forrige skript. Levenshtein -avstanden til to ord, "narr" og "følelse", er 2 som er trykt i utgangen:

Eksempel 2: Sammenlign to strenger med flere ord

Lag en PHP -fil med følgende skript som klemmer Levenshtein -avstanden mellom to strenger med flere ord ved bruk av Levenshtein () -funksjonen. Verdien av Levenshtein -avstanden skrives ut senere. Her inneholder den første strengen tre ord, og den andre strengen inneholder to ord. Ett ord er vanlig i begge strengene. Levenshtein -avstanden til disse to strengene skrives ut senere.

// definere den første strengen
$ str1 = 'php programmeringsspråk';
// definere den andre strengen
$ str2 = 'java programmering';
// Beregn Levenshtein -avstanden
ekko "

Levenshtein -avstanden er ".Levenshtein ($ str1, $ str2).""

";
?>

Produksjon:

Følgende utgang vises etter å ha utført forrige skript. Her er den første strengverdien "PHP -programmeringsspråk”Og den andre strengen er“Java -programmering”. Ordet "Programmering”Er vanlig i begge strengene. Fire tegn er pålagt å endre for å få “Java” fra “PHP” og 9 tegn (språk) er pålagt å fjerne fra den første strengen for å få den andre strengen. Så Levenshtein -avstanden er 4+9 = 13.

Eksempel 3: Søk på den nøyaktige eller nærmeste kampen i matrisen

Lag en PHP -fil med følgende skript som søker i en bestemt streng i en matrise. Finn ut verdien fra matrisen som nøyaktig eller delvis samsvarer. Søkstrengverdien er hentet fra URL -parameteren. Hvis det ikke gis noen URL -parameter, brukes standardstrengverdien for søkestrengen. Den opprinnelige verdien av $ short_distance er satt til -1 før de itererer matriseverdiene for å finne den nøyaktige eller nærmeste kampen. Den første for hver Loop brukes til å skrive ut de eksisterende verdiene til matrisen. Den andre for hver Loop brukes til å iterere matriseverdiene og beregne Levenshtein -avstanden mellom hver arrayverdi og søkestrengen i hver iterasjon. Hvis Levenshtein -avstanden blir 0 i noen iterasjon, eksisterer den nøyaktige samsvaret med søkestrengen i matrisen. Ellers blir den nærmeste kampen til søkestrengen hentet fra matriseverdiene basert på den laveste Levenshtein avstandsverdi.

// Angi søkeverdien
$ Search = isset ($ _ get ['src'])? $ _Get ['src']: "java";
// angi standardavstandsverdi
$ short_distance = -1;
// erklære en matrise
$ språk = array ('php', 'perl', 'python', 'bash', 'java', 'c ++', 'c#', 'java');
ekko "Array -verdier er:
";
Foreach ($ språk som $ lang)
ekko $ lang.""
";
ekko "søkeord: $ søk";
// Søk i den nøyaktige eller nærmeste verdien i matrisen som samsvarer med søkeverdien
foreach ($ språk som $ språk)
// Beregn Levenshtein -avstanden
$ lev_distance = levenshtein ($ search, $ språk);
// Kontrollere den nøyaktige kampen
if ($ lev_distance == 0)
$ short_distance = 0;
ekko "
Den nøyaktige kampen er funnet.";
gå i stykker;

// Søk i nærmeste kamp
if ($ lev_distance <= $short_distance || $short_distance < 0)
// Tilbakestill kort avstand
$ short_distance = $ lev_distance;
// tilbakestill den nærmeste verdien
$ close_value = $ språk;


// Skriv ut den nærmeste matchede verdien
if ($ short_distance> 0)
ekko "
Den nærmeste verdien av søkeordet er ".$ close_value;
?>

Produksjon:

Følgende utgang vises etter å ha utført det forrige skriptet hvis ingen URL -parameter er gitt. I dette tilfellet er standard søkeverdien “Java”Som eksisterer i matrisen. Så Levenshtein -avstanden blir 0 for denne søkeverdien når du beregner Levenshtein -avstanden med det femte elementet i matrisen som også er "Java”:

Følgende utgang vises etter å ha utført det forrige skriptet for søkeverdien som er “Python”Som er gitt i URL -parameteren. I dette tilfellet søkeverdien “Python”Eksisterer i matrisen. Så Levenshtein -avstanden blir 0 for denne søkeverdien når du beregner Levenshtein -avstanden med det tredje elementet i matrisen som også er "Python”:

Følgende utgang vises etter å ha utført det forrige skriptet for søkeverdien “Python3”Det er gitt i URL -parameteren. I dette tilfellet er søkeverdien “Python3”Som delvis stemmer overens med ett element i matrisen som er“Python”. Så Levenshtein -avstanden blir 1 for denne søkeverdien når du beregner Levenshtein -avstanden med det tredje elementet i matrisen:

Konklusjon

De forskjellige bruken av Levenshtein () -funksjonen som vises i denne opplæringen vil hjelpe de nye Python -brukerne til å vite formålet med å bruke denne funksjonen og kunne bruke den riktig i skriptet sitt.