Maison >développement back-end >tutoriel php >Explication détaillée des chaînes d'opération PHP

Explication détaillée des chaînes d'opération PHP

韦小宝
韦小宝original
2018-03-08 16:04:152390parcourir

Il existe huit principaux types de données en PHP, et String en fait également partie, et c'est aussi le plus courant et le plus couramment utilisé. 🎜> La chaîne PHP effectue certaines opérations Aujourd'hui, nous allons voir comment intercepter la chaîne PHP dans cet article !

1.mb_strimwidthInterception de chaînesUtilisation des fonctions et compréhension de l'encodage UTF8

<?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  

?>

Manuel ci-joint Introduction :

mb_strimwidth

(PHP 4 >= 4.0.6, PHP 5)

mb_strimwidth — Obtenez une chaîne tronquée avec une largeur spécifiée

Description

string mb_strimwidth ( stringstr,intstr,intstart , intwidth[,stringwidth[,stringtrimmarker [, string$encoding ]] )
Tronque stringstr à la largeur spécifiée.

Cette expérience :

1. Cette fonction nécessite que le système charge l'extension mb (multi-octets)

2 Le paramètre $trimmarker affectera le résultat, et sa longueur est également incluse dans le résultat

3. Cette fonction calcule la largeur occupée par la chaîne dans une police à largeur fixe. Les caractères chinois occupent deux largeurs et les autres occupent une largeur.

4. Il est bon de transmettre les paramètres d'encodage

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
C'est tout pour les opérations sur les chaînes PHP, vous pouvez le tester pour le savoir !
$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码返回相应的字符

Recommandations associées :

Explication détaillée de l'utilisation de la chaîne php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn