PHP-Abfangen chinesischer und englischer String-Operationen

巴扎黑
Freigeben: 2016-11-22 10:43:08
Original
1178 Leute haben es durchsucht

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;
    }
}
Nach dem Login kopieren

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.

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage