PHP操作字串詳解

來源:互聯網
上載者:User
PHP中有八大資料類型,而字串也是其中的一種,而且還是最常見的最常用的一種,通常我們都需要對PHP字串進行一些操作,今天我們就一起來看看本篇文章是如何對PHP字串進行截取的吧!

1.mb_strimwidth字串截取函數使用 & UTF8編碼認識

<?php  header("Content-type:text/html;charset=utf-8");  echo mb_strwidth("6", "UTF-8") . '<br />';//1  echo mb_strwidth("A", "UTF-8") . '<br />';//1  echo mb_strwidth("a", "UTF-8") . '<br />';//1  echo mb_strwidth("月", "UTF-8") . '<br />';//2  echo mb_strwidth("6月9日OUR系統升級通知", "UTF-8") . '<br />';//21  echo mb_strimwidth("6月9日OUR系統升級通知", 0, 10, '...') .'<br />';//6月9��...  echo mb_strimwidth("6月9日OUR系統升級通知", 0, 10, '...', "UTF-8") .'<br />';//6月9日O...  echo mb_strimwidth("6月9日OUR系統升級通知", 0, 10, '......', "UTF-8") .'<br />';//6月9......  echo mb_strimwidth("6月9日OUR系統升級通知", 0, 10, '', "UTF-8") .'<br />';//6月9日OUR  ?>

附手冊介紹:

mb_strimwidth
(PHP 4 >= 4.0.6, PHP 5)

mb_strimwidth — Get truncated string with specified width

Description
string mb_strimwidth ( stringstr,intstr,intstart , intwidth[,stringwidth[,stringtrimmarker [, string$encoding ]] )
Truncates stringstr to specified width.

本次經驗

1. 這個函數需要系統載入mb(multi-byte)擴充

2. $trimmarker參數會影響結果 ,其長度也被計入結果中

3. 此函數按等寬字型計算字串佔用寬度。漢字佔兩個寬度,其餘佔一個寬度。

4 .傳入編碼參數是好的

2.

mb_substr($string,'GBK'),mb_strlen($string,'GBK'),mb_strwidth($string,'GBK') 適用於GBK

3.

mb_substr($string,'GBK'),mb_strlen($string,'GBK'),mb_strwidth($string,'GBK')適用於GBK
$test = "123中文測試";//字元數$mb_strlen($test, 'GBK');//7$mb_strlen($test, 'UTF-8');//7$mb_strlen($test);//11//位元組數$mb_strwidth($test, 'GBK');//11$mb_strwidth($test, 'UTF-8');//4$mb_strwidth($test);//11mb_substr($test, 0, 4);//亂碼mb_substr($test, 0, 5);//123中//字元數mb_substr($test, 0, 4, 'GBK');//123中mb_substr($test, 0, 5, 'GBK');//123中文mb_substr($test, 0, 4, 'gb2312');//123中mb_substr($test, 0, 4, 'UTF-8');//亂碼//截取中文英文字串://方法1:function str_cut($str, $len){    $str = iconv($str, 'GBK', 'GBK/TRANLIT');    if (mb_strwidth($str) < $len) {        return $str;    }    for ($i = 0; $i < mb_strlen($str); $i++) {        $tmp = mb_substr($str, $i, 1, 'GBK');        if (mb_strwidth($return . $tmp) > $len) {            break;        }        $return .= $tmp;    }    return $return;}// 方法2:function str_cut($str, $len){    $str = iconv($str, 'GBK', 'GBK/TRANLIT');    if (mb_strwidth($str) < $len) {        return $str;    }    for ($i = 0; $i < mb_strlen($str); $i++) {        $return = mb_substr($str, 0, $i, 'GBK');        if (mb_strwidth($return) > $len) {            $return = mb_substr($str, 0, $i - 1, 'GBK');            break;        }    }    return $return;}/*判斷中文和編碼有關 gbk是雙位元組,utf8是三位元組,可以根據 中文的範圍來判斷編碼範圍1. GBK (GB2312/GB18030)x00-xff GBK雙位元組編碼範圍x20-x7f ASCIIxa1-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 = '';    $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('Not a UTF-8 compatible string');        }        $count++;    }    return (substr($str, $start_position, $end_position - $start_position));}// int ord ( string string )------返回字元的ASCII碼// string chr ( int ascii )-----根據字元的ASCII碼返回相應的字元

對PHP字串操作的內容就是這麼多了,大家可以測試測試瞭解一下!

相關推薦:

php字串用法詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.