Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der PHP-Operationszeichenfolgen

Detaillierte Erläuterung der PHP-Operationszeichenfolgen

韦小宝
韦小宝Original
2018-03-08 16:04:152370Durchsuche

Es gibt acht wichtige Datentypen in PHP, und String ist auch einer davon, und er ist auch der häufigste und am häufigsten verwendete Typ. Normalerweise müssen wir PHP-String führt einige Operationen aus. Heute werfen wir einen Blick darauf, wie man PHP-Strings in diesem Artikel abfängt!

1.mb_strimwidthString InterceptionFunktionsnutzung und Verständnis der UTF8-Codierung

<?php  
header("Content-type:text/html;charset=utf-8");  

echo mb_strwidth("6", "UTF-8") . &#39;<br />&#39;;//1  
echo mb_strwidth("A", "UTF-8") . &#39;<br />&#39;;//1  
echo mb_strwidth("a", "UTF-8") . &#39;<br />&#39;;//1  
echo mb_strwidth("月", "UTF-8") . &#39;<br />&#39;;//2  

echo mb_strwidth("6月9日OUR系统升级通知", "UTF-8") . &#39;<br />&#39;;//21  

echo mb_strimwidth("6月9日OUR系统升级通知", 0, 10, &#39;...&#39;) .&#39;<br />&#39;;//6月9��...  
echo mb_strimwidth("6月9日OUR系统升级通知", 0, 10, &#39;...&#39;, "UTF-8") .&#39;<br />&#39;;//6月9日O...  
echo mb_strimwidth("6月9日OUR系统升级通知", 0, 10, &#39;......&#39;, "UTF-8") .&#39;<br />&#39;;//6月9......  
echo mb_strimwidth("6月9日OUR系统升级通知", 0, 10, &#39;&#39;, "UTF-8") .&#39;<br />&#39;;//6月9日OUR  

?>

Beigefügte manuelle Einführung :

mb_strimwidth

(PHP 4 >= 4.0.6, PHP 5)

mb_strimwidth – Abgeschnittene Zeichenfolge mit angegebener Breite abrufen

Beschreibung

string mb_strimwidth ( stringstr,intstr,intstart , intwidth[,stringwidth[,stringtrimmarker [, string$encoding ]] )
Kürzung von stringstr auf die angegebene Breite.

Diese Erfahrung :

1. Für diese Funktion muss das System die MB-Erweiterung (Multibyte) laden

2. Der Parameter $trimmarker wirkt sich auf das Ergebnis aus und seine Länge ist ebenfalls im Ergebnis enthalten

3. Diese Funktion berechnet die Breite, die die Zeichenfolge in einer Schriftart mit fester Breite einnimmt. Chinesische Schriftzeichen nehmen zwei Breiten ein, und der Rest nimmt eine Breite ein.

4. Es ist gut, Codierungsparameter zu übergeben

2.

mb_substr($string,&#39;GBK&#39;),
mb_strlen($string,&#39;GBK&#39;),
mb_strwidth($string,&#39;GBK&#39;) 
适用于GBK

3.

mb_substr($string,&#39;GBK&#39;),mb_strlen($string,&#39;GBK&#39;),mb_strwidth($string,&#39;GBK&#39;)适用于GBK
$test = "123中文测试";

//字符数
$mb_strlen($test, &#39;GBK&#39;);//7
$mb_strlen($test, &#39;UTF-8&#39;);//7

$mb_strlen($test);//11

//字节数
$mb_strwidth($test, &#39;GBK&#39;);//11
$mb_strwidth($test, &#39;UTF-8&#39;);//4
$mb_strwidth($test);//11

mb_substr($test, 0, 4);//乱码
mb_substr($test, 0, 5);//123中


//字符数

mb_substr($test, 0, 4, &#39;GBK&#39;);//123中
mb_substr($test, 0, 5, &#39;GBK&#39;);//123中文

mb_substr($test, 0, 4, &#39;gb2312&#39;);//123中
mb_substr($test, 0, 4, &#39;UTF-8&#39;);//乱码

//截取中文英文字符串:
//方法1:

function str_cut($str, $len)
{
    $str = iconv($str, &#39;GBK&#39;, &#39;GBK/TRANLIT&#39;);
    if (mb_strwidth($str) < $len) {
        return $str;
    }
    for ($i = 0; $i < mb_strlen($str); $i++) {
        $tmp = mb_substr($str, $i, 1, &#39;GBK&#39;);
        if (mb_strwidth($return . $tmp) > $len) {
            break;
        }
        $return .= $tmp;
    }
    return $return;
}

// 方法2:

function str_cut($str, $len)
{
    $str = iconv($str, &#39;GBK&#39;, &#39;GBK/TRANLIT&#39;);
    if (mb_strwidth($str) < $len) {
        return $str;
    }
    for ($i = 0; $i < mb_strlen($str); $i++) {
        $return = mb_substr($str, 0, $i, &#39;GBK&#39;);
        if (mb_strwidth($return) > $len) {

            $return = mb_substr($str, 0, $i - 1, &#39;GBK&#39;);
            break;
        }
    }
    return $return;
}

/*
判断中文和编码有关 gbk是双字节,utf8是三字节,可以根据 中文的范围来判断

编码范围1. GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文
x80-xff 中文
2. UTF-8 (Unicode)
u4e00-u9fa5 (中文)
x3130-x318F (韩文
xAC00-xD7A3 (韩文)
u0800-u4e00 (日文)
ps: 韩文是大于[u9fa5]的字符
*/
//二、代码例子

//截取字符串字串-GBK (PHP)
function gb_substr($str, $len)
{
    $count = 0;
    for ($i = 0; $i < strlen($str); $i++) {
        if ($count == $len) break;
        if (preg_match("/[x80-xff]/", substr($str, $i, 1))) ++$i;
        ++$count;
    }
    return substr($str, 0, $i);
}

function substrGb($str, $len)
{
    $ret = &#39;&#39;;
    $i = 0;
    while ($i < $len) {
        $ch = substr($str, $i, 1);
        if (ord($ch) > 0x80) {
            $i++;
        }
        $i++;
    }
    $ret = substr($str, 0, $i);
    return $ret;
}

//截取字符串-UTF8(PHP)
function utf8_substr($str, $position, $length)
{
    $start_position = strlen($str);
    $start_byte = 0;
    $end_position = strlen($str);
    $count = 0;
    for ($i = 0; $i < strlen($str); $i++) {
        if ($count >= $position && $start_position > $i) {
            $start_position = $i;
            $start_byte = $count;
        }
        if (($count - $start_byte) >= $length) {
            $end_position = $i;
            break;
        }
        $value = ord($str[$i]);
        if ($value > 127) {
            $count++;
            if ($value >= 192 && $value <= 223) $i++;
            elseif ($value >= 224 && $value <= 239) $i = $i + 2;
            elseif ($value >= 240 && $value <= 247) $i = $i + 3;
            else die(&#39;Not a UTF-8 compatible string&#39;);
        }
        $count++;
    }
    return (substr($str, $start_position, $end_position - $start_position));
}

// int ord ( string string )------返回字符的ASCII码
// string chr ( int ascii )-----根据字符的ASCII码返回相应的字符
Das ist alles für PHP-String-Operationen, Sie können es testen, um es herauszufinden!

Verwandte Empfehlungen:

Detaillierte Erläuterung der Verwendung von PHP-Strings

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der PHP-Operationszeichenfolgen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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