當前位置:首頁 » 編程語言 » php計算字元串的長度

php計算字元串的長度

發布時間: 2022-10-24 12:19:31

php中如何獲取字元串的長度

//使用strlen()函數
$a='abcdefghaa11';
$b=strlen($a);
echo$b;
//$b=12

⑵ php字元串長度如何計算

說明
strlen ( string $string ) : int
返回給定的字元串 string 的長度。
參數
string
需要計算長度的字元串。
返回值
成功則返回字元串 string 的長度;如果 string 為空,則返回 0。
更新日誌
版本 說明
5.3.0 Prior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.
範例
Example #1 strlen() 範例

⑶ php如何獲取字元串長度,中文、符號、英文字母都算作一個

一般情況下 有漢字的時候 是使用 mb_strlen 這個函數來計算字元長度
這個函數需要開啟 mb_string擴展 默認都是不開啟的

⑷ php如何獲取中文字元長度,一個中文字元算一個

在PHP中專門的mb_substr和mb_strlen函數,可以對中文進行截取和計算長度,但是,由於這些函數並非PHP的核心函數,所以,它們常常有可能沒有開啟。要在php.ini中開啟即可。獲取長度實例:1 ,utf-8環境下使用

header('Content-type:text/html;charset=utf-8');
/**
*可以統計中文字元串長度的函數
*@param$str要計算長度的字元串
*@param$type計算長度類型,0(默認)表示一個中文算一個字元,1表示一個中文算兩個字元
*
*/
functionabslength($str)
{
if(empty($str)){
return0;
}
if(function_exists('mb_strlen')){
returnmb_strlen($str,'utf-8');
}
else{
preg_match_all("/./u",$str,$ar);
returncount($ar[0]);
}
}
$str='我們都是中國人啊,ye!';
$len=abslength($str);
var_mp($len);//return12
$len=abslength($str,'1');
echo'<br/>'.$len;//return22

/*
utf-8編碼下截取中文字元串,參數可以參照substr函數
@param$str要進行截取的字元串
@param$start要進行截取的開始位置,負數為反向截取
@param$end要進行截取的長度
*/
functionutf8_substr($str,$start=0){
if(empty($str)){
returnfalse;
}
if(function_exists('mb_substr')){
if(func_num_args()>=3){
$end=func_get_arg(2);
returnmb_substr($str,$start,$end,'utf-8');
}
else{
mb_internal_encoding("UTF-8");
returnmb_substr($str,$start);
}

}
else{
$null="";
preg_match_all("/./u",$str,$ar);
if(func_num_args()>=3){
$end=func_get_arg(2);
returnjoin($null,array_slice($ar[0],$start,$end));
}
else{
returnjoin($null,array_slice($ar[0],$start));
}
}
}
$str2='wo要截取zhongwen';
echo'<br/>';
echoutf8_substr($str2,0,-4);//returnwo要截取zhon

2,支持gb2312,gbk,utf-8,big5 中文截取方法

/*

* 中文截取,支持gb2312,gbk,utf-8,big5

*

* @param string $str 要截取的字串

* @param int $start 截取起始位置

* @param int $length 截取長度

* @param string $charset utf-8|gb2312|gbk|big5 編碼

* @param $suffix 是否加尾綴

*/

public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

{

if(function_exists("mb_substr"))

{

if(mb_strlen($str, $charset) <= $length) return $str;

$slice = mb_substr($str, $start, $length, $charset);

}

else

{

$re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";

$re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";

$re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";

$re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";

preg_match_all($re[$charset], $str, $match);

if(count($match[0]) <= $length) return $str;

$slice = join("",array_slice($match[0], $start, $length));

}

if($suffix) return $slice."…";

return $slice;

}

⑸ 字元串長度怎麼算

長度為從字元串開始,到''結束,所有字元的個數,不包括''本身。

C語言的字元串是由字元數組形式保存的,並約定''(ascii碼值為0)作為字元串結束符。

strlen計算的是字元串的長度,單位是「字元」,只能對字元串運算,而且它是函數(不是運算符),計算時,不包含末尾的"";當對字元數組操作時,返回的是數組總存放的字元串的實際長度(也就是之前的),也就是當把數組作為參數傳遞給strlen時是會退化成char*指針的。

(5)php計算字元串的長度擴展閱讀:

strlen() 函數用於計算字元串的長度。

算出字元串 "Hello world!" 的長度:

<?php

echo strlen("Hello world!");

?>

以上代碼的輸出:

12字元串的長度信息常常用在循環或其他函數中,因為那時確定字元串何時結束是很重要的(例如,在循環中,我們需要在字元串中的最後一個字元之後結束循環)。

⑹ php截取一段字元 計算它的長度,多餘的用「...」代替

function cut_str($sourcestr,$cutlength){
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字元串的位元組數
while (($n<$cutlength) and ($i<=$str_length))
{
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//得到字元串中第$i位字元的ascii碼
if ($ascnum>=224) //如果ASCII位高與224,
{
$returnstr=$returnstr.substr($sourcestr,$i,3); //根據UTF-8編碼規范,將3個連續的字元計為單個字元
$i=$i+3; //實際Byte計為3
$n++; //字串長度計1
}
elseif ($ascnum>=192) //如果ASCII位高與192,
{
$returnstr=$returnstr.substr($sourcestr,$i,2); //根據UTF-8編碼規范,將2個連續的字元計為單個字元
$i=$i+2; //實際Byte計為2
$n++; //字串長度計1
}
elseif ($ascnum>=65 && $ascnum<=90) //如果是大寫字母,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //實際的Byte數仍計1個
$n++; //但考慮整體美觀,大寫字母計成一個高位字元
}
else //其他情況下,包括小寫字母和半形標點符號,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //實際的Byte數計1個
$n=$n+0.5; //小寫字母和半形標點等與半個高位字元寬...
}
}
if ($str_length>$cutlength){
$returnstr = $returnstr."...";//超過長度時在尾處加上省略號
}
return $returnstr;
}
以上是函數,參數是相應字元串和該字元串長度,字元串的長度可以通過strlen函數獲取!希望對你有幫助!

⑺ PHP怎麼獲取字元串長度

PHP對中文字元串的處理一直困擾於剛剛接觸PHP開發的新手程序員。下面簡要的剖析一下PHP對中文字元串長度的處理:

(1)PHP自帶的函數如strlen()、mb_strlen()都是通過計算字元串所佔位元組數來統計字元串長度的,一個英文字元佔1位元組;

(2)中文則不然,做中文網站一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能兼容更多的字元,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔位元組也有差異。



⑻ PHP字元串長度計算 - strlen()函數使用介紹

strlen()函數和mb_strlen()函數
在PHP中,函數strlen()返回字元串的長度。函數原型如下:
復制代碼
代碼如下:
int
strlen(string
string_input);
參數string_input為要處理的字元串。
strlen()函數返回字元串所佔的位元組長度,一個英文字母、數字、各種符號均佔一個位元組,它們的長度均為1。一個中午字元占兩個位元組,所以一個中午字元的長度是2。例如
復制代碼
代碼如下:
<?php
echo
strlen("www.sunchis.com");
echo
strlen("三知開發網");
?>
「echo
strlen("www.sunchis.com");」的運行結果:15
「echo
strlen("三知開發網");」的運行結果:15
這里有一個疑問,一個中文字元不是佔2個位元組嗎?「三知開發網」,明明是五個漢字,運行的結果怎麼會是15?
原因出在這里:strlen()計算時,對於一個UTF-8的中文字元,會把它當做長度為3來處理。當出現中英文混排的情況下,怎麼准確的計算字元串的長度呢?這里,得引入另外一個函數mb_strlen()。mb_strlen()函數的用法與strlen()幾乎一摸一樣,只是多了一個指定字元集編碼的參數。函數原型為:
復制代碼
代碼如下:
int
mb_strlen(string
string_input,
string
encode);
PHP內置的字元串長度函數strlen無法正確處理中文字元串,它得到的只是字元串所佔的位元組數。對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是3倍的差異了(在UTF-8編碼下,一個漢字佔3個位元組)。
因此,下面的代碼能准確計算出中文字元串的長度:
復制代碼
代碼如下:
<?php
$str
=
"三知sunchis開發網";
echo
strlen($str)."<br>";
//結果:22
echo
mb_strlen($str,"UTF8")."<br>";
//結果:12
$strlen
=
(strlen($str)+mb_strlen($str,"UTF8"))/2;
echo
$strlen;
//結果:17
?>
原理分析:
strlen()計算時,對待UTF-8的中文字元長度是3,所以「三知sunchis開發網」的長度為5×3+7×1=22
在mb_strlen計算時,選定內碼為UTF8,則會將一個中文字元當作長度1來計算,所以「三知sunchis開發網」長度為5×1+7×1=12
剩下的就是純數學問題了,在此就不啰嗦了……
注意:對於mb_strlen($str,'UTF-8'),如果省略第二個參數,則會使用PHP的內部編碼。內部編碼可以通過mb_internal_encoding()函數得到。需要注意的是,mb_strlen並不是PHP核心函數,使用前需要確保在php.ini中載入了php_mbstring.dll,即確保「extension=php_mbstring.dll」這一行存在並且沒有被注釋掉,否則會出現未定義函數的問題。

⑼ PHP中如何獲得字元串的長度

strlen(string)函數返回字元串的長度,
<?php
echo strlen("Hello world!");
?>

輸出12

⑽ PHP中strlen()和mb_strlen()的區別淺析

在php中常見的計算字元串長度的函數有:strlen和mb_strlen.當字元全是英文字元的時候,兩者是一樣。這里主要比較一下,中英文混排的時候,兩個計算結果。
先來看一個例子:
復制代碼
代碼如下:
<?php
//測試時文件的編碼方式要是UTF8
$str='中文a字1符';
echo
strlen($str).'<br>';//14
echo
mb_strlen($str,'utf8').'<br>';//6
echo
mb_strlen($str,'gbk').'<br>';//8
echo
mb_strlen($str,'gb2312').'<br>';//10
?>
結果分析:在strlen計算時,對待一個UTF8的中文字元是3個長度,所以「中文a字1符」長度是3*4+2=14,在mb_strlen計算時,選定內碼為UTF8,則會將一個中文字元當作長度1來計算,所以「中文a字1符」長度是6。
利用這兩個函數則可以聯合計算出一個中英文混排的串的佔位是多少(一個中文字元的佔位是2,英文字元是1)
復制代碼
代碼如下:
echo
(strlen($str)
+
mb_strlen($str,'UTF8'))
/
2;
例如:「中文a字1符」
的strlen($str)值是14,mb_strlen($str)值是6,則可以計算出「中文a字1符」的佔位是10:
PHP內置的字元串長度函數strlen無法正確處理中文字元串,它得到的只是字元串所佔的位元組數。
對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是3倍的差異了(在UTF-8編碼下,一個漢字佔3個位元組)。
採用mb_strlen函數可以較好地解決這個問題。
mb_strlen的用法和
strlen類似,只不過它有第二個可選參數用於指定字元編碼。
例如得到UTF-8的字元串$str長度,可以用mb_strlen($str,'UTF-8')。如果省略第二個參數,則會使用PHP的內部編碼。內部編碼可以通過mb_internal_encoding()函數得到。
注意:
mb_strlen並不是PHP核心函數,使用前需要確保在php.ini中載入了php_mbstring.dll
即確保「extension=php_mbstring.dll」這一行存在並且沒有被注釋掉,否則會出現未定義函數的問題。

熱點內容
microsoft資料庫 發布:2025-09-23 17:20:40 瀏覽:228
三星證書存儲的密碼 發布:2025-09-23 17:16:26 瀏覽:726
我的世界抽獎32k伺服器推薦 發布:2025-09-23 17:03:46 瀏覽:809
b站在筆記本上怎麼緩存啊 發布:2025-09-23 16:41:53 瀏覽:386
光遇為什麼ios的心比安卓貴 發布:2025-09-23 16:34:26 瀏覽:727
南京編程少兒 發布:2025-09-23 16:28:25 瀏覽:693
安卓手機的游戲文件夾在哪裡設置 發布:2025-09-23 16:04:21 瀏覽:296
java免費離線編譯器 發布:2025-09-23 14:54:56 瀏覽:273
征途腳本賺錢 發布:2025-09-23 14:41:41 瀏覽:296
apache設置訪問ip 發布:2025-09-23 14:41:29 瀏覽:887