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.
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.
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.
<?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.
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 |
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.