在先前的文章《PHP怎麼將某長度的子字串換成*號》中,我們介紹了字串替換,將某長度的子字串換成*號的方法,這次我們繼續了解字串,介紹一下計算中文字串長度,或是中英文混合字串長度的方法。
如何計算中文字串長度?對於這個問題,我們可能第一個反應就是使用strlen()函數,但strlen()函數處理全英文字串還是不錯的,但當了中英文混合或純中文的字串中,就不行了。我們來看看下面的範例:
<?php header("Content-type:text/html;charset=utf-8"); //设置字符编码为utf-8 $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.strlen($str).'<br>'; ?>
輸出結果為:
可以看出,strlen()函數因為處理字元的規則不同,無法準確的回傳中英文混合或純中文字串的長度。那為什麼會回27呢?
那是因為我們採用的字元編碼為utf-8,在UTF-8 編碼下一個中文字元佔三個位元組。
strlen()函數在ASCII碼下,一個中文漢字佔兩個位元組的空間;在UTF-8編碼下,一個中文(含繁體)等於三個位元組;在Unicode編碼下,一個中文(含繁體)等於兩個位元組。
而上例中的字串「歡迎來到PHP中文網!
」中一個包含了8個中文字符,3個英文字符,則8 *3 3=27
個位元組,則字串長度為27。
但這樣的字串長度不是我們想要的,那樣如何處理中文字符,可以準確的計算出我們想要的中英文混合或純中文字串的長度呢?
PHP提供了一個函數來解決這個問題,那就是mb_strlen() 函數。
還是上個範例,這次使用mb_strlen() 函數來計算字串長度:
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.mb_strlen($str,'utf-8').'<br>'; ?>
輸出結果為:
$str中,中文英文感嘆號,一個有11個字符,輸出結果也為11。對了,找到對的人了~
mb_strlen() 函數中無論是漢字,還是英文、數字、小數點、底線和空格,都只佔一個位元組。下面我們來簡單了解一下mb_strlen() 函數。
mb_strlen($string,$encoding)函數可以透過設定字元編碼從而傳回對應的字元數;該函數接受一個必需參數$string(需要偵測的字串)和一個可省略的參數
$encoding(字元編碼),如果省略則使用內部字元編碼。
$encoding參數,就能很好的處理中文字串的長度問題。
PHP字串處理(玉女心經版)》,免費的~快來學習啊!
以上是PHP字串學習如何傳回漢字或混合字元的長度的詳細內容。更多資訊請關注PHP中文網其他相關文章!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版