您現在的位置: 365建站網 > 365學習 > PHP中substr和mb_substr的使用方法及參數設置

PHP中substr和mb_substr的使用方法及參數設置

文章來源:365jz.com     點擊數:231    更新時間:2018-01-09 10:00   參與評論

大家都知道js中字符串截取字符有函數substr和substring,那PHP呢,php沒有直接可用的substring函數,但是有substr函數。
不信自己可以測試一下。 下面給出一段正確的代碼。

<?
$a="me";
echo(substr($a,,));//輸出me
?>
下面又給出一段錯誤的代碼
<?
$a="me";
echo(subString($a,,));
?>

substr() 函數返回字符串的一部分。

substr(string,start,length)

string:要截取的字符串

start:

正數 - 在字符串的指定位置開始
負數 - 在從字符串結尾的指定位置開始
0 - 在字符串中的第一個字符處開始

length:

可選。規定要返回的字符串長度。默認是直到字符串的結尾。
正數 - 從 start 參數所在的位置返回
負數 - 從字符串末端返回

PHP substr()的用法詳解

定義和用法

substr() 函數返回字符串的一部分。使用substr()函數截取中文可能會出現亂碼,建議使用mb_substr() 函數截取中文。

語法

substr(string,start,length)

 

參數 描述
string 必需。規定要返回其中一部分的字符串。
start

必需。規定在字符串的何處開始。

  • 正數 - 在字符串的指定位置開始
  • 負數 - 在從字符串結尾的指定位置開始
  • 0 - 在字符串中的第一個字符處開始
length

可選。規定要返回的字符串長度。默認是直到字符串的結尾。

  • 正數 - 從 start 參數所在的位置返回
  • 負數 - 從字符串末端返回

 

提示和注釋

注釋:如果 start 是負數且 length 小于等于 start,則 length 為 0。

例子

<?php
$str = 'hello world!';
echo substr($str, 4); // o world! 左起第4開始向右截取到末尾
echo substr($str, 4, 5); // o wor 左起第4開始向右取5位
echo substr($str, 4, -1); // o world 左起第4與右起第1之間的字符
echo substr($str, -8, 4); // o wo 右起第8開始向右截取4位
echo substr($str, -8,-2); // o worl 右起第8與右起第2之間的字符
?>

PHP substr()函數可以分割文字,但要分割的文字如果包括中文字符往往會遇到問題,這時可以用mb_substr()/mb_strcut這個函數,mb_substr() /mb_strcut的用法與substr()相似,只是在mb_substr()/mb_strcut最后要加入多一個參數,以設定字符串的編碼,但是 一般的服務器都沒打開php_mbstring.dll,需要在php.ini中把php_mbstring.dll打開。

function: mb_substr( $str, $start, $length, $encoding )

$str,需要截斷的字符串
$start,截斷開始處
$length,長度(注意,這個跟mb_strimwidth不同,1就代表一個中文字符)
$encoding,編碼,我設為 utf-8

例:截斷文章標題,控制在15個文字
代碼如下:
<?php echo mb_substr(get_the_title(), 0, 15,"utf-8"); ?> 
 
<?php
echo mb_substr('我們都是好孩子hehe',0,9);
?>
輸出:我們都

現在我們加上字符集utf-8
<?php
echo mb_substr('我們都是好孩子hehe',0,9,'utf-8');
?>

輸出:我們都是好孩子he

第一個是以三個字節為一個中文,這就是utf-8編碼的特點,下面加上utf-8字符集說明,所以,是以一個字為單位來截取的



下面是截取UTF-8編碼下字符串的函數

 function sub_str($str, $length = 0, $append = true)
 {
     $str = trim($str);
     $strlength = strlen($str);

     if ($length == 0 || $length >= $strlength)
     {
         return $str;  //截取長度等于0或大于等于本字符串的長度,返回字符串本身
     }
     elseif ($length < 0)  //如果截取長度為負數
     {
         $length = $strlength + $length;//那么截取長度就等于字符串長度減去截取長度
         if ($length < 0)
         {
             $length = $strlength;//如果截取長度的絕對值大于字符串本身長度,則截取長度取字符串本身的長度
         }
     }

     if (function_exists('mb_substr'))
     {
         $newstr = mb_substr($str, 0, $length, EC_CHARSET);
     }
     elseif (function_exists('iconv_substr'))
     {
         $newstr = iconv_substr($str, 0, $length, EC_CHARSET);
     }
     else
     {
         //$newstr = trim_right(substr($str, 0, $length));
         $newstr = substr($str, 0, $length);
     }

     if ($append && $str != $newstr)
     {
         $newstr .= '...';
     }

     return $newstr;
 }

如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇


發表評論 (231人查看,0條評論)
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
用戶名: 驗證碼: 點擊我更換圖片
最新評論
------分隔線----------------------------
自拍偷拍福力视频,偷拍国际精品,麻豆一区福利电影,国产网红视频午夜福利,se视频大全,久久国产AV影院 欧美人与禽交zozo| 抖音奶片故意走漏视频7028| 深夜特黄a级毛片免费视频| 男女作爱免费网站| 美女极品粉嫩美鮑20p图| 国产纶乱视频| 美女扒开内裤无遮挡18禁| 亚洲综合另类小说色区色噜噜| 扒开粉嫩小泬的图片| 闺蜜把我腿打开用黄瓜自慰| TaylorVixen最好看的| 伦理片在线观看| 强奷漂亮饱满雪白少妇| free性欧美1819护士| 青青青视频在线最热| 女人与公拘交真实性| 天堂亚洲2017在线观看| 香港三日本三级少妇三级99| 国产色诱视频在线播放网站| 福利天堂芒果| AV电影在线| japanese18一21| 中文字幕视频二区人妻| 美女视频黄是免费| 波多野结衣人妻| 日本妇人成熟a片免费观看| 真人性做爰| 男人J进女人P免费视频| 欧美换爱交换乱理伦片1000部| 办公室被三个老板玩弄| 尤物网| http://www.abcgraphics.org