Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Abfangen chinesischer und englischer String-Operationen

PHP-Abfangen chinesischer und englischer String-Operationen

巴扎黑
巴扎黑Original
2016-11-22 10:43:081174Durchsuche

Ich bin heute auf ein solches Problem gestoßen. Ich glaube, jeder ist darauf gestoßen. Wenn der Benutzername zu lang ist, wird er abgefangen und als ... angezeigt. Unsere Anforderungen sind ähnlich wie bei Sina Weibo. Wenn es 5 Ziffern überschreitet, werden 4 chinesische Zeichen angezeigt. Wie wir alle wissen, belegt ein chinesisches Zeichen zwei englische Positionen beim Satz. Daher müssen analog zu oben maximal 10 Ziffern angezeigt werden.

Die im Internet gefundene Lösung ist nicht sehr gut, deshalb habe ich selbst eine geschrieben. Ich habe sie in den Helfer gelegt. Reden wir nicht über die Ideen, sondern gehen wir direkt zum Code über.

<?php
class Zend_View_Helper_UserName
{
    public function userName($userName, $length)
    {
        $retUserName = &#39;&#39;;
        $position = 0;
        $count = 1;
        while ($count <= $length) {
            $subStr = mb_substr($userName, $position, 1, &#39;UTF-8&#39;);
            if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u", $subStr)) {
                $count += 2;
            } else {
                $count++;
            }
            $position++;
            $retUserName .= $subStr;
        }
        $retUserNameLength  = mb_strlen($retUserName);
        $userNameLength = mb_strlen($userName) ;
        if ($retUserNameLength >= $userNameLength - 1 && $retUserNameLength <= $userNameLength) {
            $retUserName = $userName;
        } else {
            $retUserName .= &#39;...&#39;;
        }
        return $retUserName;
    }
}

Bei dieser Verwendung können Sie den Namen leicht abfangen. Und es ist sowohl für Chinesisch als auch für Englisch geeignet. Der Nachteil besteht darin, dass es möglicherweise einige Ressourcen verbraucht als Funktionen wie Substr.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-FehlerberichtNächster Artikel:PHP-Fehlerbericht