Aktueller Standort: Startseite> Neueste Artikel> Wie kann man bei Verwendung der Funktion cType_upper gemeinsame numerische und Symbolfehleinschätzungen vermeiden?

Wie kann man bei Verwendung der Funktion cType_upper gemeinsame numerische und Symbolfehleinschätzungen vermeiden?

gitbox 2025-08-22

Wie kann man bei Verwendung von CTYPE_UPPER -Funktion gemeinsame numerische und symbolische Fehleinschätzungen vermeiden?

In PHP ist CTYPE_UPPER () eine häufig verwendete Zeichenklassifizierungsfunktion, die erkennt, ob alle Zeichen in einer Zeichenfolge Großbuchstaben sind. Die Syntax ist sehr einfach:

 <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">ctype_upper</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$text</span></span><span>);
</span></span>

Geben Sie True zurück, wenn alle Zeichen im String $ -Text Großbuchstaben sind, andernfalls geben Sie false zurück. In der tatsächlichen Entwicklung kann die Funktion cType_upper () jedoch einige unerwartete Fehleinschätzungen erleiden, insbesondere wenn Zeichenfolgen oder Symbole enthalten sind. Dies liegt daran, dass cType_upper () nur den Zeichentyp in der Zeichenfolge überprüft, aber den Zeichenkontext nicht berücksichtigt.

Häufige Fehleinschätzungen

  1. Nummern und Symbole Fehleinschätzung :
    Die Funktion cType_upper () unterscheidet nicht zwischen Buchstaben und nicht-alphabetischen Zeichen. Wenn die Zeichenfolge, in die Sie übergeben, Zahlen oder Symbole enthält, werden sie als "Nicht-Unterkünfte" -Scharnien behandelt, wodurch CTYPE_UPPER () zurückgegeben wird, auch wenn die Zeichenfolge nicht ausführliche Zeichen enthält.

    Zum Beispiel:

     <span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">'HELLO123'</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">ctype_upper</span></span><span>(</span><span><span class="hljs-variable">$text</span></span><span>));  </span><span><span class="hljs-comment">// Ausgabe bool(true),Falsches Urteil</span></span><span>
    </span></span>

    Dieses Urteil sollte falsch zurückkehren, weil 123 kein Großbuchstaben ist, sondern CTYPE_UPPER () fälschlicherweise glaubt, dass es sich um einen Großbuchstaben handelt.

  2. Räume und Sonderzeichen :
    In ähnlicher Weise werden nicht alphabetische Zeichen wie Räume, Interpunktionsmarken in einer Saite auch als "Einhaltung von Großbuchstaben" falsch eingeschätzt, wodurch das Ergebnis der Funktion beeinflusst wird.

    Zum Beispiel:

     <span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">'HELLO WORLD!'</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">ctype_upper</span></span><span>(</span><span><span class="hljs-variable">$text</span></span><span>));  </span><span><span class="hljs-comment">// Ausgabe bool(true),Falsches Urteil</span></span><span>
    </span></span>

    Leerzeichen und Ausrufezeichen hier sollten nicht als Teil der Großbuchstaben angesehen werden.

Wie man Fehleinschätzung vermeidet

Um diese Probleme zu lösen, müssen wir zunächst sicherstellen, dass nur alphabetische Zeichen in der Zeichenfolge am Urteil teilnehmen. Sie können nicht alphabetische Zeichen wie Zahlen, Räume, Symbole usw. durch eine einfache Vorverarbeitung herausfiltern und dann die Funktion cType_upper () aufrufen.

1. Filtern Sie nicht alphabetische Zeichen heraus

Die integrierte Funktion preg_replace () von PHP kann verwendet werden, um nicht alphabetische Zeichen zu entfernen, und es werden nur alphabetische Zeichen erhalten. Auf diese Weise wird CTYPE_UPPER () nicht durch nicht alphabetische Zeichen gestört.

 <span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">'HELLO123'</span></span><span>;
</span><span><span class="hljs-variable">$filtered_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/[^a-zA-Z]/'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);  </span><span><span class="hljs-comment">// Nur Briefe bleiben erhalten</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">ctype_upper</span></span><span>(</span><span><span class="hljs-variable">$filtered_text</span></span><span>));  </span><span><span class="hljs-comment">// 正确Ausgabe bool(true)</span></span><span>
</span></span>

2. Überprüfen und filtern Sie Räume und Symbole

Wenn die Zeichenfolge Leerzeichen und andere Symbole enthält, können Sie diese Zeichen auch entfernen, bevor Sie prüfen, ob es sich um alle Großbuchstaben handelt.

 <span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">'HELLO WORLD!'</span></span><span>;
</span><span><span class="hljs-variable">$filtered_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/[^a-zA-Z]/'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);  </span><span><span class="hljs-comment">// Räume und Symbole entfernen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">ctype_upper</span></span><span>(</span><span><span class="hljs-variable">$filtered_text</span></span><span>));  </span><span><span class="hljs-comment">// Ausgabe bool(true)</span></span><span>
</span></span>

3.. Fügen Sie eine detailliertere Inspektion hinzu

Wenn eine feinkörnige Kontrolle erforderlich ist, wird empfohlen, selbst eine Funktion zu implementieren, die nicht nur prüfen kann, ob es sich bei dem Charakter um einen Brief handelt, sondern auch sicherstellen kann, dass sie aktiviert ist. Zum Beispiel:

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">is_all_upper</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$text</span></span></span><span>) {
    </span><span><span class="hljs-comment">// Filtern Sie nicht alphabetische Zeichen heraus</span></span><span>
    </span><span><span class="hljs-variable">$filtered_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/[^a-zA-Z]/'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
    
    </span><span><span class="hljs-comment">// Stellen Sie fest, ob es sich um Großbuchstaben handelt</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">ctype_upper</span></span><span>(</span><span><span class="hljs-variable">$filtered_text</span></span><span>);
}

</span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">'HELLO123'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_all_upper</span></span><span>(</span><span><span class="hljs-variable">$text</span></span><span>));  </span><span><span class="hljs-comment">// Ausgabe bool(true)</span></span><span>
</span></span>

Zusammenfassen

cType_upper () ist eine sehr nützliche Funktion, aber wenn wir in der Praxis verwendet werden, müssen wir sicherstellen, dass sein Urteil nicht von nicht alphabetischen Zeichen (z. B. Zahlen, Symbole, Räume usw.) beeinflusst wird. Durch eine angemessene Vorverarbeitung und Filterung können häufige Fehleinschätzungsprobleme vermieden werden, wodurch die Robustheit des Codes verbessert wird. In der tatsächlichen Entwicklung sollten wir nicht nur auf die Art der Zeichen achten, sondern auch den Kontext der Zeichenfolge umfassend berücksichtigen, um die Genauigkeit der Daten zu gewährleisten.