81 Stimmen

ucfirst()-Funktion für Multibyte-Zeichenkodierungen

Ich habe mich erkundigt nach strtolower Funktion. Aber wenn ich ausländische Zeichen verwende, werden sie nicht in Großbuchstaben umgewandelt, so dass ich sie verwenden muss:

 mb_strtolower($a,"utf8");

Aber was kann ich tun, wenn ich die ucfirst() Funktion? Ich habe keine ähnliche Funktion gefunden, bei der ich den Kodierungstyp einstellen kann.

0 Stimmen

0 Stimmen

P.S. Es gibt ein Composer-Paket mit richtig implementiertem mbUcFirst() github.com/cofirazak/phpMissingFunctions

134voto

zneak Punkte 129366

Es gibt keine mb_ucfirst Funktion, wie Sie bereits bemerkt haben. Sie können eine mb_ucfirst mit zwei mb_substr :

function mb_ucfirst($string, $encoding)
{
    $firstChar = mb_substr($string, 0, 1, $encoding);
    $then = mb_substr($string, 1, null, $encoding);
    return mb_strtoupper($firstChar, $encoding) . $then;
}

1 Stimmen

Wie verhält sich dies im Vergleich zu den anderen benutzerdefinierten Funktionen? zum Beispiel, php.net/handbuch/de/funktion.ucfirst.php#108856 PS Ich weiß, dass ich TIAS kann, aber da viele Leute dieses Problem haben, hat vielleicht schon jemand die Antwort

7 Stimmen

Kann man anstelle von $strlen-1 auch NULL übergeben und braucht dann die erste Zeile nicht.

0 Stimmen

Wirklich? Das klingt ein bisschen seltsam. null als dritter Parameter an mb_substr bedeutet Länge minus eins?

95voto

Alex Belyaev Punkte 1277

Dies ist eine prägnantere Lösung, obwohl sie ziemlich ähnlich ist wie ucwords Funktion:

$final_string = mb_convert_case($your_string, MB_CASE_TITLE, 'UTF-8');

Wenn Sie eine Zeichenfolge, die aus einem Wort besteht, groß schreiben müssen, ist dies die beste Lösung.

2 Stimmen

Fast die beste Antwort, aber Koralek M. ist nützlicher - es ist unempfindlich bei Änderung der Kodierung Ihres www-Dienstes

1 Stimmen

@fider Dieser kann auch unempfindlich gegenüber Änderungen der Kodierung sein, wenn Sie den Parameter 'UTF-8' weglassen. Wie bei allen mb_* Funktionen

2 Stimmen

Funktioniert perfekt. Im Grunde genommen ist dies die eingebaute mb_ucfirst Äquivalent in PHP.

35voto

Koralek M. Punkte 3053
function mb_ucfirst($string)
{
    return mb_strtoupper(mb_substr($string, 0, 1)).mb_substr($string, 1);
}

23 Stimmen

Der Rest der Zeichenkette sollte nicht kleingeschrieben werden.

0 Stimmen

Es funktioniert gut. Wenn nicht, prüfen Sie, ob die mb_* Funktionen in Ihrer Umgebung überhaupt funktionieren.

0 Stimmen

Diese Funktion erfordert PHP/5.4.8 oder höher. Außerdem müssen Sie wahrscheinlich ein gutes Gebietsschema einstellen und sicherstellen, dass mb_internal_encoding() gibt einen korrekten Wert zurück.

14voto

hanshenrik Punkte 17261

Stand 2019-11-18, es scheint, dass niemand auf Stackoverflow dies richtig verstanden hat, hier ist, wie mb_ucfirst() in Userland implementiert werden sollte:

function mb_ucfirst(string $str, string $encoding = null): string
{
    if ($encoding === null) {
        $encoding = mb_internal_encoding();
    }
    return mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding) . mb_substr($str, 1, null, $encoding);
}

3 Stimmen

Ps: Falls es Sie interessiert, ich habe zu jeder zweiten Antwort einen Kommentar hinzugefügt, in dem ich erkläre, was meiner Meinung nach falsch ist.

0 Stimmen

P.S. Es gibt ein Composer-Paket mit richtig implementiertem mbUcFirst() github.com/cofirazak/phpMissingFunctions

7voto

goyote Punkte 564
if (!function_exists('mb_ucfirst'))
{
    function mb_ucfirst($value)
    {
        return mb_strtoupper(mb_substr($value, 0, 1)) . mb_substr($value, 1);
    }
}

0 Stimmen

Es funktioniert gut. Wenn nicht, prüfen Sie, ob die mb_* Funktionen in Ihrer Umgebung überhaupt funktionieren.

1 Stimmen

Diese Funktion erfordert PHP/5.4.8 und höher. Außerdem müssen Sie wahrscheinlich ein gutes Gebietsschema einstellen und sicherstellen, dass mb_internal_encoding() gibt einen korrekten Wert zurück.

1 Stimmen

Sie können keine Kodierung angeben =/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X