程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> substr(),mb_substr()及mb_strcut函數用法與區別

substr(),mb_substr()及mb_strcut函數用法與區別

編輯:關於PHP編程

在php中substr(),mb_substr()及mb_strcut三個函數都是字符截取函數,但是substr截取中文時會有亂碼,而後兩者支持中文截取,下面我來介紹介紹。

substr()函數

substr(string,start,length)

string表示要截取的對象,start表示從哪個位置開始截取,0表示從頭開始,正數表示從這個數的位置後面截取,負數表示從結尾算開始截取的位置,但依然是從左到右截,length表示截取長度.負數表示排除或忽略結尾多少個字符.比如:

 代碼如下 復制代碼 <?php
$siteurl = 'www.bKjia.c0m';
print_r (substr($siteurl,4));exit;

//則返回:  bKjia.c0m表示從頭第4個字符開始,返回後面的所有字符.

 代碼如下 復制代碼

<?php
$siteurl = 'www.bKjia.c0m';
print_r (substr($siteurl,-6,2));exit;

如果要截取雙字節的漢字.則要用PHP mb_substr函數或mb_strcut函數,但這兩個函數依賴php擴展php_mbstring.dll組件,所以要配置你的服務器.即把php安裝目錄中的php_mbstring.dll文件復制到你的windows 2003 的c盤的Windows/system32目錄中.


舉個例子:

 代碼如下 復制代碼

<?php
echo mb_substr('這樣一來我的字符串就不會有亂碼^_^', 0, 7, 'utf-8');
?>

輸出:這樣一來我的字

 代碼如下 復制代碼

<?php
echo mb_strcut('這樣一來我的字符串就不會有亂碼^_^', 0, 7, 'utf-8');
?>

輸出:這樣一

從上面的例子可以看出,mb_substr是按字來切分字符,而mb_strcut是按字節來切分字符,但是都不會產生半個字符的現象……

 代碼如下 復制代碼

<?php
echo mb_substr('飛花院博客feihuayuan',0,9);
//返回: 飛花院

echo mb_substr('飛花院博客feihuayuan',0,9,'utf-8');
//則返回: 飛花院博客feih

mb_strcut('飛花院博客feihuayuan',0,9,'utf-8');
則返回:飛花院
?>

再舉個例子,有一段文字, 分別用mb_substr和mb_strcut來做切分:

PLAIN TEXT
CODE:

 代碼如下 復制代碼

<?php
$str = '我是一串比較長的中文-';

echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');

echo "<br>";

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?>

輸出結果如下:

mb_substr:我是一串比較
mb_strcut:我是

本文章總結

從上面實例可以看得出來,substr只支持單字節的,這樣只適合英文截取,而mb_substr函數是雙字體截取了,正好可用於中文了,而mb_strcut是三字節了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved