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

php判斷字元串的長度

發布時間: 2022-09-02 05:43:31

php,一個簡單的問題,判斷變數字元長度和類型的格式

strlen PHP 內置函數 獲取 字元串長度
$alen=strlen($a);

if($alen>6 && $alen<12){
echo '我是6-12之間的字元串';

}else{
echo '我不是6-152之間的字元串';

}

判斷數字 可以用PHP 內置函數 is_numeric
if(is_numeric($a)){
echo '是數字';

}else{
echo '不是數字';

}

② 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獲取中英混合字元串長度的方法

今晚在寫框架的表單驗證類時,需要判斷某個字元串長度是否在指定區間內,很自然地,想到了PHP中的strlen函數。
.代碼如下:
$str
=
'Hello
world!';
echo
strlen($str); //
輸出12
然而在PHP自帶的函數中,strlen及mb_strlen都是通過計算字元串所佔位元組數來計算長度的,在不同的編碼情況下,中文所佔的位元組數是不同的。在GBK/GB2312下,中文字元佔2個位元組,而在UTF-8下,中文字元佔3個位元組。
.代碼如下:
$str
=
'你好,世界!';
echo
strlen($str); //
GBK或GB2312下輸出12,UTF-8下輸出18
而我們在判斷字元串長度時往往需要判斷的是字元的數量,而非字元串所佔位元組數,如在UTF-8下的這段PHP代碼:
.代碼如下:
$name
=
'張耕暢';
$len
=
strlen($name);
//
輸出
FALSE,因為在UTF-8下三個中文佔9個位元組
if($len
>=
3
&&
$len
<=
8){
echo
'TRUE';
}else{
echo
'FALSE';
}
那麼有什麼方便而實用的方法可以獲得含中文字元串的長度呢?可以用正則計算出中文字元的個數,在GBK/GB2312編碼下除以2,UTF-8編碼下則除以3,最後再加上非中文字元串的長度,但這樣未免太過麻煩。

WordPress這么一段代碼,借鑒如下:
.代碼如下:
$str
=
'Hello,世界!';
preg_match_all('/./us',
$str,
$match);
echo
count($match[0]); //
輸出9
思想是用正則表達式將字元串分割成單個字元,並直接用count計算出匹配到的字元數,便是我們想要的結果了。

但以上代碼在UTF-8編碼下並不能處理GBK/GB2312的中文字元串,因為GBK/GB2312的中文字元會被識別為兩個字元而計算出來的中文字元數量會翻倍,於是我想到了這么一個辦法:
.代碼如下:
$tmp
=
@iconv('gbk',
'utf-8',
$str);
if(!empty($tmp)){
$str
=
$tmp;
}
preg_match_all('/./us',
$str,
$match);
echo
count($match[0]);
可兼容GBK/GB2312及UTF-8編碼,經小量數據測試通過,但暫未確定是否完全正確,盼有大牛指點一二。

以上本意是為了框架可以兼容多種編碼格式,但一般在日常開發中,一個項目是已經可以確定為何種編碼的,因此可以使用以下函數來方便地獲取字元串長度:
.代碼如下:
int
iconv_strlen
(
string
$str
[,
string
$charset
=
ini_get("iconv.internal_encoding")
]
)

④ PHP怎麼獲取字元串長度

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

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

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



⑤ 用PHP統計字元串長度

PHP 計算字元串長度代碼示例如下,具體邏輯在代碼中。

<?php
//統計字元串長度,適用中文,字母,數字混編
functionget_strlength($str){
//強字元串統一轉換為utf-8格式
$encode=mb_detect_encoding($str,array('ASCII','UTF-8','GB2312','GBK'));
if(!$encode=='UTF-8'){
$str=iconv('UTF-8',$encode,$str);
}
//初始化字元串長度
$count=0;

//循環統計
for($i=0;$i<strlen($str);$i++){
//獲取字元串首字母對應的ASCII值
$value=ord($str[$i]);

if($value>127){
$count++;
if($value>=192&&$value<=223){
$i++;
}elseif($value>=224&&$value<=239){
$i=$i+2;
}elseif($value>=240&&$value<=247){
$i=$i+3;
}else{
die('字元串異常!!');
}
}
$count++;
}
return$count;
}

//測試
echoget_strlength("中國人2015年的gdp為:6666");
//25
?>

⑥ 判斷是否為指定長度內字元串的php函數

復制代碼
代碼如下:
//———————————————————————————–
//
函數名:CheckLengthBetween($C_char,
$I_len1,
$I_len2=100)
//

用:判斷是否為指定長度內字元串
//

數:$C_char(待檢測的字元串)
//
$I_len1
(目標字元串長度的下限)
//
$I_len2
(目標字元串長度的上限)
//
返回值:布爾值
//

註:無
//———————————————————————————–
function
CheckLengthBetween($C_cahr,
$I_len1,
$I_len2=100)
{
$C_cahr
=
trim($C_cahr);
if
(strlen($C_cahr)
<
$I_len1)
return
false;
if
(strlen($C_cahr)
>
$I_len2)
return
false;
return
true;
}
//———————————————————————————–

⑦ PHP如何判斷兩個字元串長度和其中一個字元串的值

<form method="post">
賬號:<input type="text" name="account" /><br />
密碼:<input type="password" name="pwd" /><br />
<input type="submit" value="判斷" />

</form>
<?php
if(!empty($_POST['account'])){
$acc=$_POST['account'];
$pwd=$_POST['pwd'];
$acc_len=strlen($acc);
$pwd_len=strlen($pwd);
if(is_numeric($pwd)){
if($acc_len==12 && $pwd_len==12){
if($pwd>1000){
echo '正確!';
}
}
}else{
echo '錯誤!';
}
}
?>

⑧ 用PHP寫一個字元長度判斷

$text = $_post['text'];
if(strlen($text)<10 || strlen($text)>50){
echo '你輸入的內容長度只能在10~50之間';
}else{
echo '恭喜,通過';
}

補充:一般不要再程序里直接用$_POST['text'],要把它先賦給一個變數再用,希望能幫到你!

⑨ 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判斷字元串長度問題

if(!preg_match("/.{2,30}/",$City)){
exit("請選擇城市!");
}

這個是正則表達式的寫法,不懂的話建議你學習下正則表達式,開發實用性很高


前後/ 是起始結束符號

. 代表任意字元

{2,30} 前一個內容2次 ~ 30次

熱點內容
全鍵盤編程鍵盤 發布:2025-01-16 01:38:59 瀏覽:421
尾貨棉服直播間腳本 發布:2025-01-16 01:21:45 瀏覽:227
vb編程步驟 發布:2025-01-16 01:11:58 瀏覽:201
bb霜解壓 發布:2025-01-16 01:11:11 瀏覽:596
編程懟人 發布:2025-01-16 00:53:08 瀏覽:760
建立共享伺服器地址 發布:2025-01-16 00:26:40 瀏覽:565
android開機動畫修改 發布:2025-01-16 00:26:26 瀏覽:872
怎麼解壓pc版游戲 發布:2025-01-16 00:16:32 瀏覽:122
v9更新到91有方舟編譯器嗎 發布:2025-01-16 00:11:49 瀏覽:500
AB系統編程 發布:2025-01-16 00:09:37 瀏覽:621