Aktueller Standort: Startseite> Neueste Artikel> Wie ignoriere ich den Fall beim Vergleich von zwei Zeichenfolgen mit PHP Strnatcasecmp?

Wie ignoriere ich den Fall beim Vergleich von zwei Zeichenfolgen mit PHP Strnatcasecmp?

gitbox 2025-05-27

In PHP ist der String -Vergleich eine sehr häufige Operation. Normalerweise verwenden wir Strcmp () oder strcasecmp () -Funktionen, um die Größe und Gleichheit von zwei Zeichenfolgen zu vergleichen, aber beide Funktionen werden Zeichen durch Zeichen nach dem ASCII -Wert des Buchstabens verglichen, während Strnatcasecmp () -Funktion in "natürlicher Art" verglichen wird, während der Fall ignoriert wird.

In diesem Artikel wird detailliert erklärt, wie die Funktion von PHP von PHP verwendet wird, um den Fallvergleich von zwei Zeichenfolgen zu ignorieren und zu erklären, wie er sich von anderen Vergleichsfunktionen unterscheidet.

Was ist die STRNATCASECMP -Funktion?

strnatcasecmp () ist eine integrierte Funktion in PHP. Es ist ein vollständiger Name "String natürlicher Fall-unempfindlicher Vergleich". Es vergleicht zwei Saiten nach "natürlicher Ordnung" und ignoriert den oberen und unteren Fall.

Die sogenannte "natürliche Sortierung" bedeutet, dass die Zahlen-Teile eher als Zahlen als nur einen Charakter-für-Charakter-Vergleich verglichen werden. Beispielsweise wird die Zeichenfolge "file10.txt" als größer als "file2.txt" angesehen, da die Nummer 10 größer als 2 ist, nicht weil das Zeichen "1" größer als 2 ist.

Syntax der Strnatcasecmp -Funktion

 int strnatcasecmp ( string $str1 , string $str2 )
  • $ str1 und $ str2 : Zwei Saiten zu vergleichen.

  • Rückgabewert:

    • Wenn $ str1 weniger als $ str2 ist, wird eine negative Zahl zurückgegeben.

    • Wenn die beiden Saiten gleich sind, geben Sie 0 zurück.

    • Wenn $ str1 größer als $ str2 ist, wird eine positive Zahl zurückgegeben.

Beispiel: Verwenden von Strnatcasecmp, um Fallvergleichszeichenfolgen zu ignorieren

 <?php
$str1 = "File10.txt";
$str2 = "file2.txt";

$result = strnatcasecmp($str1, $str2);

if ($result < 0) {
    echo "'$str1' Weniger als '$str2'";
} elseif ($result > 0) {
    echo "'$str1' Größer als '$str2'";
} else {
    echo "'$str1' Und '$str2' gleich";
}
?>

Ausgabe:

 'File10.txt' Größer als 'file2.txt'

Obwohl der Zahlenteil der ersten Zeichenfolge "10" ist und der zweite "2" ist, erkennt Strnatcasecmp () die Größe der Anzahl korrekt und ignoriert den Fall.

Unterschiede zu anderen String -Vergleichsfunktionen

Funktionsname Ob es sich um fallempfindlich handelt Ob auf natürliche Weise sortieren soll veranschaulichen
STRCMP () Ja NEIN Fallempfindlichkeit, Charaktervergleich
Strcasecmp () NEIN NEIN Fall-unempfindlich, Zeichen für Zeichen
strnatcmp () Ja Ja Fallempfindlichkeit, natürliche Sortierung
strnatcasecmp () NEIN Ja Unempfindlich gegenüber Fall, natürliche Sortierung

Kombiniertes URL -Beispiel

Angenommen, Sie möchten die Pfadenteile der beiden URLs basierend auf dem Dateinamen vergleichen und den Fall und die numerische Größenbeziehung ignorieren. Sie können StrnatCasecmp () verwenden, um dies zu erreichen.

 <?php
$url1 = "https://gitbox.net/files/File10.txt";
$url2 = "https://gitbox.net/files/file2.txt";

// Analyse URL,Den Pfad Teil nehmen
$path1 = parse_url($url1, PHP_URL_PATH);
$path2 = parse_url($url2, PHP_URL_PATH);

// verwenden strnatcasecmp Vergleiche Pfade
if (strnatcasecmp($path1, $path2) < 0) {
    echo "$path1 Weniger als $path2";
} elseif (strnatcasecmp($path1, $path2) > 0) {
    echo "$path1 Größer als $path2";
} else {
    echo "$path1 Und $path2 gleich";
}
?>

Ausgabe:

 /files/File10.txt Größer als /files/file2.txt

Dies ist sehr praktisch, wenn es um Strings mit Zahlen wie Dateinamen, Versionsnummern usw. geht.