similar_text în PHP

Calculează cât de asemănătoare sunt două texte, ca număr de caractere comune și ca procent.

Sintaxă
similar_text(string $string1, string $string2, &$percent = null): int

Ce face similar_text

similar_text returnează numărul de caractere comune ale celor două texte. Dacă dai și al treilea parametru, în el primești asemănarea în procente (0-100).

Este utilă pentru potriviri aproximative: nume scrise puțin diferit, titluri duplicate. Calculul este mai lent decât levenshtein și lucrează pe octeți.

Parametri

Parametru Descriere
$string1 Primul text.
$string2 Al doilea text.
$percent Opțional. Variabilă în care se salvează procentul de asemănare.

Ce returnează

Numărul de caractere comune.

Exemple

Exemplul 1: Caractere comune și procent

<?php
$comune = similar_text("Ion Popescu", "Ioan Popescu", $procent);

echo "Caractere comune: $comune\n";
echo "Asemănare: " . round($procent, 1) . "%";

Rezultat

Caractere comune: 11
Asemănare: 95.7%

Exemplul 2: Detectarea titlurilor aproape identice

<?php
$nou = "Cum instalezi PHP pe Windows";
$existente = ["Cum instalez PHP pe Windows 11", "Ghid MySQL pentru începători"];

foreach ($existente as $titlu) {
    similar_text(strtolower($nou), strtolower($titlu), $p);
    echo $titlu . ": " . round($p) . "%\n";
}

Rezultat

Cum instalez PHP pe Windows 11: 93%
Ghid MySQL pentru începători: 28%

Greșeli frecvente

  • Inversezi ordinea textelor și primești alt rezultat. similar_text nu este simetrică în toate cazurile; folosește aceeași ordine peste tot.

Comenzi înrudite

  • levenshtein: Calculează câte modificări de caractere sunt necesare ca un text să devină altul (distanța Levenshtein).
  • strcmp / strcasecmp / strncmp: Compară două texte și spune dacă primul este mai mic, egal sau mai mare decât al doilea.