導航:首頁 > 編程語言 > php字元串數字大小

php字元串數字大小

發布時間:2022-09-08 19:27:58

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字元串大小比較問題,太多的疑問!!請求前輩指路!萬分感謝!

str2.jpg與str10.jpg比較,前三個字母完全一樣,第四個2比1大。

m與M比較,就是比較它們的ASCII碼,m比M大。

一般計算機都是這么比較的。

使用自然排序法更符合人們的習慣

str2與str10相比,2比10小。

m與M比較,還是比較ASCII碼,與上面一樣

㈢ 請教:關於PHP字元串大小對比問題

方法就是將字元串分割,然後用mktime轉換為時間戳
這個二樓說的很清楚了

還有一種簡單點的方法strtotime()
直接將字元串轉換為時間戳
例如:strtotime("2009-10-31 19:14:00");
將輸出1256987640 這樣就可以直接比較

注意,如果與當前時間比較,記得設置下時區,
date_default_timezone_set('PRC');
不然,會有8小時的偏差

㈣ php字元串為什麼可以直接比較大小

可能是實驗巧合,用邏輯運算符比較字元串時,會先把字元串轉換成數字,再比較數值。

比如

"10hello"會轉換成整型10

"9.8"會轉換成浮點9.8f

轉換後再進行比較。


比較字元串或位元組數據最好用strcmp之類的字元串函數。



題主是個無腦的豬,選了個錯誤答案

<?php
$a='10';
$b='9.8';
var_mp($a>$b);
var_mp(strcmp($a,$b)>0);
booleantrue
booleanfalse


所有的資料都會告訴你,字元串絕不能用邏輯運算符。

㈤ php判斷字元串全部大小寫

?是轉大小寫嗎?如果字元串全部轉為大小可以用,strtoupper()函數,小寫用strtolower()函數

㈥ php用什麼函數可以返回字元串的大小

strlen返回位元組數,你自己除1024就得到KB,沒有直接返回KB的函數

㈦ php中比較兩個數大小的內置函數是什麼

函數描述:mixed max(mixed arg1, mixed arg2, …,mixed argn);
返回值:返回此數組中的最大值,若參數中有浮點數,則所有參數轉化成浮點數,
返回值也為浮點數;否則所有參數轉化成整數,返回值為整數。

函數描述:mixed min(mixed arg1, mixed arg2, …,mixed argn);
返回值:返回此數組中的最小值,若參數中有浮點數,則所有參數轉化成浮點數,
返回值也為浮點數;否則所有參數轉化成整數,返回值為整數。

㈧ php中英文字元串為什麼能比較大小

是根據內碼進行比較,因為字元的內碼叫做ASCII,中文內碼有有UTF、UNICODE、ANSI等不同標准,和你說的ASCII類似,你可以這樣理解。

例子程序和代碼:

【編】【程】兩個字進行比較的情況如上,當然漢字是兩個位元組的,上面只顯示了格子的第一個位元組。

㈨ 為什麼php里字元串可以比較大小字元串也不像數字那樣有個明確的值啊,所以比較的是字元串的什麼屬性

用strcmp函數。
strcmp() 函數比較兩個字元串。
注釋:strcmp() 函數是二進制安全的,且對大小寫敏感。
echo strcmp("Hello world!","Hello world!");

㈩ php 如何按大小排列字元串

$arr=array($str1,$str2,$str3,$str4);
$arr=arsort($arr);//從大到小
//$arr=asort($arr);//從小到大
while(list($name,$value)=each($arr)){
echo $name.": ".$value."<br>";
}

閱讀全文

與php字元串數字大小相關的資料

熱點內容
androidm3u8緩存 瀏覽:234
imphp開源知乎 瀏覽:706
清除網路通配符dos命令 瀏覽:837
鴻蒙系統怎麼快速換回安卓 瀏覽:712
pdf綠色虛擬列印機 瀏覽:213
androidtab框架 瀏覽:147
java轉php的時間戳 瀏覽:638
編譯libstdc依賴 瀏覽:657
清演算法人與原法人的區別 瀏覽:410
家庭裝修下載什麼app軟體 瀏覽:575
美食博主用什麼app拍視頻 瀏覽:815
ipone手機如何加密微信 瀏覽:357
自來水加密閥閥帽 瀏覽:437
華為交換機dhcp配置命令 瀏覽:319
androidbitmap縮小 瀏覽:275
單片機串口控制燈 瀏覽:88
大訊雲伺服器安裝視頻 瀏覽:788
華為演算法領先世界 瀏覽:658
linux路由重啟 瀏覽:570
php的模板編程 瀏覽:324