Aktueller Standort: Startseite> Neueste Artikel> Wie verwendete ich die STRNATCMP -Funktion von PHP, um die vom Benutzer eingegebene Zeichenfolge zu normalisieren?

Wie verwendete ich die STRNATCMP -Funktion von PHP, um die vom Benutzer eingegebene Zeichenfolge zu normalisieren?

gitbox 2025-09-09

In PHP ist StrnatCMP eine sehr praktische Funktion, mit der Zeichenfolgen "natürlich sortiert" werden können. Die natürliche Sortierung sortiert nach der tatsächlichen Größe der Zahlen, nicht nur nach der wörtlichen Reihenfolge der Zeichen. Dieser Ansatz ist besonders nützlich, wenn es um Zeichenfolgen geht, die Zahlen enthalten, insbesondere wenn wir Benutzereingaben vergleichen müssen. In diesem Artikel wird vorgestellt, wie die Funktion der STRNATCMP verwendet wird, um die vom Benutzer eingegebene Zeichenfolge zu standardisieren und einige Beispiele zu verwenden, um das Anwendungsszenario anzuzeigen.

1. Was ist die STRNATCMP -Funktion?

STRNATCMP ist eine Funktion in PHP zum Vergleich von zwei Zeichenfolgen. Im Gegensatz zu gewöhnlichen String -Vergleichsfunktionen wie STRCMP berücksichtigt StrnatCMP die Größe der Zahlen, sodass sie die Zeichenfolge nach dem Zahlenteil in der Zeichenfolge "auf natürliche Weise sortieren" kann. Dies bedeutet, dass bei der natürlichen Sortierung "10" eher als "2" als ein wörtlicher Vergleich angesehen wird.

Die Funktionssignatur ist wie folgt:

 <span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string1</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string2</span></span><span> )
</span></span>
  • Rückgabewert : Rückgabe einer Ganzzahl, die das Vergleichsergebnis der Zeichenfolge darstellt:

    • Negative Zahl zurückgeben: bedeutet $ String1 ist weniger als $ String2

    • Rückgabe positive Zahl: bedeutet $ String1 ist größer als $ String2

    • Rückkehr 0: bedeutet, dass die beiden Saiten gleich sind

2. Warum brauchen Sie Strnatcmp ?

Herkömmliche String-Vergleichsfunktionen (z. B. STRCMP ) können bei der Vergleich von Zeichenfolgen mit Zahlen intuitionstuitive Ergebnisse erzielen. Zum Beispiel:

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</span><span><span class="hljs-string">'10'</span></span><span>, </span><span><span class="hljs-string">'2'</span></span><span>); </span><span><span class="hljs-comment">// Eine positive Zahl ausgeben</span></span><span>
</span></span>

Dies weist darauf hin, dass 10 größer als 2 ist, aber im Kontext der natürlichen Sortierung sollte die Zahl 10 nach 2. Stranatcmp dieses Problem lösen:

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">'10'</span></span><span>, </span><span><span class="hljs-string">'2'</span></span><span>); </span><span><span class="hljs-comment">// Negative Ausgabe,äußern '10' Weniger als '2'</span></span><span>
</span></span>

3 ..

Angenommen, Sie arbeiten an einem Formular, in dem der Benutzer mehrere Zeichenfolgen (z. B. Dateinamen, Versionsnummer oder andere Zeichenfolgen mit Zahlen) eingegeben hat, und Sie möchten die Sortierung oder den Vergleich dieser Zeichenfolgen normalisieren. Mit der Verwendung von StrnatCMP können Sie diese Zeichenfolgen nach natürlicher Sortierung vernünftigerweise sortieren.

Beispiel 1: Natürlich die vom Benutzer eingegebenen Dateinamen sortieren

 <span><span><span class="hljs-comment">// Angenommen, der Benutzer hat den folgenden Dateinamen eingegeben</span></span><span>
</span><span><span class="hljs-variable">$files</span></span><span> = [</span><span><span class="hljs-string">'file10.txt'</span></span><span>, </span><span><span class="hljs-string">'file2.txt'</span></span><span>, </span><span><span class="hljs-string">'file1.txt'</span></span><span>, </span><span><span class="hljs-string">'file20.txt'</span></span><span>];

</span><span><span class="hljs-comment">// verwenden usort Und strnatcmp Natürlich zu sortieren</span></span><span>
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>, </span><span><span class="hljs-string">'strnatcmp'</span></span><span>);

</span><span><span class="hljs-comment">// Ausgeben des sortierten Dateinamens</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$files</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

Ausgangsergebnis:

 <span><span>file1.txt
file2.txt
file10.txt
file20.txt
</span></span>

In diesem Beispiel stellt Strnatcmp sicher, dass Dateinamen nach der Größe der Zahlen sortiert werden, nicht in der Reihenfolge der Zeichen.

Beispiel 2: Vergleich der von den Benutzern eingegebenen Versionsnummern

Ein weiteres häufiges Nutzungsszenario besteht darin, Versionsnummern zu vergleichen. Angenommen, der Benutzer hat zwei Versionsnummern eingegeben und Sie möchten seine Größen vergleichen:

 <span><span><span class="hljs-variable">$version1</span></span><span> = </span><span><span class="hljs-string">'1.10.2'</span></span><span>;
</span><span><span class="hljs-variable">$version2</span></span><span> = </span><span><span class="hljs-string">'1.9.9'</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-variable">$version1</span></span><span>, </span><span><span class="hljs-variable">$version2</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> &lt; </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$version1</span></span></span><span> is less than </span><span><span class="hljs-subst">$version2</span></span><span>\n";
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> &gt; </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$version1</span></span></span><span> is greater than </span><span><span class="hljs-subst">$version2</span></span><span>\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$version1</span></span></span><span> is equal to </span><span><span class="hljs-subst">$version2</span></span><span>\n";
}
</span></span>

Ausgangsergebnis:

 <span><span><span class="hljs-number">1.10</span></span><span><span class="hljs-number">.2</span></span><span> </span><span><span class="hljs-keyword">is</span></span><span> greater than </span><span><span class="hljs-number">1.9</span></span><span><span class="hljs-number">.9</span></span><span>
</span></span>

Durch STRNATCMP können wir die Versionsnummern genau vergleichen und den Fehler herkömmlicher String -Vergleichsmethoden vermeiden.

4. Anwendungsszenarien von strnatcmp

  • Benutzereingangsüberprüfung : Wenn die von Benutzern eingegebenen Zeichenfolgen eingeben, kann der Inhalt der Zeichenfolge sortiert oder verglichen werden. STRNATCMP kann Ihnen helfen, Zeichenfolgen angemessen nach der Größe der Zahlen zu sortieren und die Benutzererfahrung zu verbessern.

  • Dateiname Sortierung : StrnatCMP ist ein sehr effektives Werkzeug, wenn Sie eine Reihe von Dateinamen sortieren müssen, insbesondere wenn der Dateiname Zahlen enthält.

  • Versionsnummernverwaltung : Für Systeme, die Software -Versionsnummern oder andere ähnliche Daten verwalten müssen, kann StrnatCMP sicherstellen, dass der Vergleich der Versionsnummern eher auf der Größe der Zahlen als auf der Reihenfolge der Zeichen basiert, wodurch genaue Vergleichsergebnisse erzielt werden.

5. Zusammenfassung

Die STRNATCMP -Funktion bietet die Fähigkeit, Zeichenfolgen auf natürliche Weise zu sortieren, und eignet sich besonders für die Handhabung von Zeichenfolgen, die Zahlen enthalten. Es entspricht eher den Regeln für natürliche Sortierungen des Menschen als mit normalen String -Vergleichsfunktionen. Durch die Einführung dieses Artikels können Sie die Vorteile von strnatcmp in praktischen Anwendungen sehen, insbesondere im Hinblick auf den Vergleich der Benutzereingabe, des Dateinamens und der Versionsnummer.