>백엔드 개발 >PHP 튜토리얼 >PHP 연산 문자열에 대한 자세한 설명

PHP 연산 문자열에 대한 자세한 설명

韦小宝
韦小宝원래의
2018-03-08 16:04:152386검색

PHP에는 8가지 주요 데이터 유형 이 있으며 문자열 도 그중 하나이며 가장 일반적이고 일반적으로 사용되는 유형입니다. 일반적으로 오늘은 PHP 문자열 에 대해 몇 가지 작업을 수행해야 합니다. 이 글에서 PHP 문자열을 가로채는 방법을 살펴보세요!

1.mb_strimwidth문자열 차단함수 사용 및 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  

?>

첨부 매뉴얼 소개:

mb_strimwidth
(PHP 4>= 4.0.6, PHP 5)

mb_strimwidth — 가져오기 지정된 너비로 잘린 문자열

Description
string mb_strimwidth ( stringstr,intstr,intstart , intwidth[,stringwidth[,string$encoding ]] )
stringstr을 지정된 너비로 자릅니다.

이 경험:

1 . 이 함수를 사용하려면 시스템에서 mb(멀티바이트) 확장자를 로드해야 합니다.

2. $trimmarker 매개변수는 결과에 영향을 미치며 해당 길이도 결과에 포함됩니다.

3 이 함수는 문자열의 너비를 계산합니다. 고정폭 글꼴로. 한자는 두 폭을 차지하고 나머지는 한 폭을 차지합니다.

4. 인코딩 매개변수를 전달하는 것이 좋습니다

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码返回相应的字符

이것이 PHP 문자열 작업의 전부입니다. 테스트하여 알아보세요!

관련 추천:

php 문자열 사용법에 대한 자세한 설명

위 내용은 PHP 연산 문자열에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.