本文提供兩種方法實現中文字串的擷取
1.使用系統提供的 mb_substr() 或iconv_substr()
函式(php.ini 配置檔案中的 mbstring 擴充套件要開啟才能使用):
函式說明:
string引數:mb_substr( string
$str
, int$start
[, int$length
= null[, string
$encoding
= mb_internal_encoding()]] )
str 從該 string 中提取子字串。例子:start str 中要使用的第乙個字元的位置。
length str 中要使用的最大字元數。
encoding 字元編碼。如果省略,則使用內部字元編碼
iconv_substr() 函式的用法同 mb_substr() 。$str = '是sdw來的abcde';
echo mb_substr($str,0,5,'utf-8') . "
"; // 輸出:是sdw來
2.自己編寫乙個字串擷取函式解決:
/**
* 中文字串擷取
* @param string $str 待擷取的字串
* @param int|integer $start 開始位置
* @param int|null $length 擷取長度,預設擷取到字串末尾
*/function utf8substr($str, $start = 0, $length = null)
if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", substr($str, $i, 1)))
++$count;
if ($count == $start)
}return substr($str, $offset, $length?($i - $offset):strlen($str));
}
測試用例:
$str = "a是df瀏覽未dfsdfads";
var_dump(utf8substr($str, 3, 5)); // 輸出:f瀏覽未d
var_dump(utf8substr($str, 3)); // 輸出:f瀏覽未dfsdfads
PHP擷取中文字串方法
程式一 php擷取中文字串方法 由於 首頁以及vtigercrm裡經常在擷取中文字串時出現亂碼 使用substr 今天找到乙個比較好的擷取中文字串方法,在此與大家共享。function msubstr str,start,len else echo newstr 程式二 php擷取utf 8字串,解...
PHP中文字串擷取函式
首先是csdn論壇php斑竹xuzuning 嘮叨 老大的,支援gb2312,gbk,big三種編碼。以下是 len 19 text 怎麼將新聞的很長的標題只顯示前面一些字,後面用.來代替?echo strlen text len text substr text,0,len chr 0 chr 0...
php 擷取中文字串方法
擷取中文字串函式 param str 需要擷取的字串 param start 開始擷取的位置 param length 擷取的長度 return 此函式返回的是乙個陣列,因此要配合join函式來顯示字串 join substring utf8 str,start,lenth public funct...