導航:首頁 > 編程語言 > php獲取字元串的編碼

php獲取字元串的編碼

發布時間:2023-01-27 09:36:00

php截取字元串之截取utf8或gbk編碼的中英文字元串示例

php中自帶strlen是返回的位元組數,對於utf8編碼的中文返回時3個,不滿足需求,下面給大家提供一個方法來完成這樣的功能
微博的發言有字數限制,其計數方式是,中文算2個,英文算1個,全形字元算2個,半形字元算1個。
php中自帶strlen是返回的位元組數,對於utf8編碼的中文返回時3個,不滿足需求。
mb_strlen
可以根據字元集計算長度,比如utf8的中文計數為1,但這不符合微博字數限制需求,中文必須計算為2才可以。
google了下,找到一個discuz中截取各種編碼字元的類,改造了下,已經測試通過.其中參數$charset
只支持gbk與utf-8。

代碼如下:
$a
=
"s@@你好";
var_mp(strlen_weibo($a,'utf-8'));

結果輸出為8,其中字母s計數為1,全形@計數為2,半形@計數為1,兩個中文計數為4。源碼如下:

代碼如下:
function
strlen_weibo($string,
$charset='utf-8')
{

$n
=
$count
=
0;

$length
=
strlen($string);

if
(strtolower($charset)
==
'utf-8')

{

while
($n
<
$length)

{

$currentByte
=
ord($string[$n]);

if
($currentByte
==
9
||

$currentByte
==
10
||

(32
<=
$currentByte
&&
$currentByte
<=
126))

{

$n++;

$count++;

}
elseif
(194
<=
$currentByte
&&
$currentByte
<=
223)

{

$n
+=
2;

$count
+=
2;

}
elseif
(224
<=
$currentByte
&&
$currentByte
<=
239)

{

$n
+=
3;

$count
+=
2;

}
elseif
(240
<=
$currentByte
&&
$currentByte
<=
247)

{

$n
+=
4;

$count
+=
2;

}
elseif
(248
<=
$currentByte
&&
$currentByte
<=
251)

{

$n
+=
5;

$count
+=
2;

}
elseif
($currentByte
==
252
||
$currentByte
==
253)

{

$n
+=
6;

$count
+=
2;

}
else

{

$n++;

$count++;

}

if
($count
>=
$length)

{

break;

}

}

return
$count;

}
else

{

for
($i
=
0;
$i
<
$length;
$i++)

{

if
(ord($string[$i])
>
127)

{

$i++;

$count++;

}

$count++;

}

return
$count;

}
}

Ⅱ php怎樣判斷字元串是什麼編碼

php判斷字元編碼的二個方法:
一個是用php自帶的函數mb_detect_encoding,一個是個人寫函數來處理。
方法1,使用mb_detect_encoding函數。
?

1
2
3
4

<?php
$str=」<a href="http://www..com/" target="_blank" class="infotextkey">腳本</a>」;
echo mb_detect_encoding($str);
?>

方法2,自定義函數。
?

1
2
3
4
5
6
7
8
9
10
11

<?php
function chkbm($string){
$bm = array(『ASCII』, 『GBK』, 『UTF-8′);
foreach($bm as $c){
if( $string === <a href="http://www..com/" target="_blank" class="infotextkey">iconv</a>(『UTF-8′, $c, iconv($c, 『UTF-8′, $string))){//轉換編碼後是不是相等
return $c;
}
}
return null;
}
?>

Ⅲ PHP符串處理函數

PHP5字元串處理函數

addcslashes — 為字元串裡面的部分字元添加反斜線轉義字元

addslashes — 用指定的方式對字元串裡面的字元進行轉義

bin2hex — 將二進制數據轉換成十六進製表示

chop — rtrim() 的別名函數

chr — 返回一個字元的ASCII碼

chunk_split — 按一定的字元長度將字元串分割成小塊

convert_cyr_string — 將斯拉夫語字元轉換為別的字元

convert_uudecode — 解密一個字元串

convert_uuencode — 加密一個字元串

count_chars — 返回一個字元串裡面的字元使用信息

crc32 — 計算一個字元串的crc32多項式

crypt — 單向散列加密函數

echo — 用以顯示一些內容

explode — 將一個字元串用分割符轉變為一數組形式

fprintf — 按照要求對數據進行返回,並直接寫入文檔流

get_html_translation_table — 返回可以轉換的HTML實體

hebrev — 將Hebrew編碼的字元串轉換為可視的文本

hebrevc — 將Hebrew編碼的字元串轉換為可視的文本

html_entity_decode — htmlentities ()函數的反函數,將HTML實體轉換為字元

htmlentities — 將字元串中一些字元轉換為HTML實體

htmlspecialchars_decode — htmlspecialchars()函數的反函數,將HTML實體轉換為字元

htmlspecialchars — 將字元串中一些字元轉換為HTML實體

implode — 將數組用特定的分割符轉變為字元串

join — 將數組轉變為字元串,implode()函數的別名

levenshtein — 計算兩個詞的差別大小

localeconv — 獲取數字相關的格式定義

ltrim — 去除字元串左側的空白或者指定的字元

md5_file — 將一個文件進行MD5演算法加密

md5 — 將一個字元串進行MD5演算法加密

metaphone — 判斷一個字元串的發音規則

money_format — 按照參數對數字進行格式化的輸出

nl_langinfo — 查詢語言和本地信息

nl2br — 將字元串中的換行符「n」替換成「



number_format — 按照參數對數字進行格式化的輸出

ord — 將一個ASCII碼轉換為一個字元

parse_str — 把一定格式的字元串轉變為變數和值

print — 用以輸出一個單獨的值

printf — 按照要求對數據進行顯示

quoted_printable_decode — 將一個字元串加密為一個8位的二進制字元串

quotemeta — 對若干個特定字元進行轉義

rtrim — 去除字元串右側的空白或者指定的字元

setlocale — 設置關於數字,日期等等的本地格式

sha1_file — 將一個文件進行SHA1演算法加密

sha1 — 將一個字元串進行SHA1演算法加密

similar_text — 比較兩個字元串,返回系統認為的相似字元個數

soundex — 判斷一個字元串的發音規則

sprintf — 按照要求對數據進行返回,但是不輸出

sscanf — 可以對字元串進行格式化

str_ireplace — 像str_replace()函數一樣匹配和替換字元串,但是不區分大小寫

str_pad — 對字元串進行兩側的補白

str_repeat — 對字元串進行重復組合

str_replace — 匹配和替換字元串

str_rot13 — 將字元串進行ROT13加密處理

str_shuffle — 對一個字元串裡面的字元進行隨機排序

str_split — 將一個字元串按照字元間距分割為一個數組

str_word_count — 獲取字元串裡面的英文單詞信息

strcasecmp — 對字元串進行大小比較,不區分大小寫

strchr — 通過比較返回一個字元串的部分strstr()函數的別名

strcmp — 對字元串進行大小比較

strcoll – 根據本地設置對字元串進行大小比較

strcspn — 返回字元連續非匹配長度的值

strip_tags — 去除一個字元串裡面的HTML和PHP代碼

stripcslashes — 反轉義addcslashes()函數轉義處理過的字元串

stripos — 查找並返回首個匹配項的位置,匹配不區分大小寫

stripslashes — 反轉義addslashes()函數轉義處理過的字元串

stristr — 通過比較返回一個字元串的部分,比較時不區分大小寫

strlen — 獲取一個字元串的編碼長度

strnatcasecmp — 使用自然排序法對字元串進行大小比較,不區分大小寫

strnatcmp — 使用自然排序法對字元串進行大小比較

strncasecmp — 對字元串的前N個字元進行大小比較,不區分大小寫

strncmp — 對字元串的前N個字元進行大小比較

strpbrk — 通過比較返回一個字元串的部分

strpos — 查找並返回首個匹配項的位置

strrchr — 通過從後往前比較返回一個字元串的.部分

strrev — 將字元串裡面的所有字母反向排列

strripos — 從後往前查找並返回首個匹配項的位置,匹配不區分大小寫

strrpos – 從後往前查找並返回首個匹配項的位置

strspn — 匹配並返回字元連續出現長度的值

strstr — 通過比較返回一個字元串的部分

strtok — 用指定的若干個字元來分割字元串

strtolower — 將字元串轉變為小寫

strtoupper –將字元串轉變為大寫

strtr — 對字元串比較替換

substr_compare — 對字元串進行截取後的比較

substr_count — 計算字元串中某字元段的出現次數

substr_replace — 對字元串中的部分字元進行替換

substr — 對字元串進行截取

trim — 去除字元串兩邊的空白或者指定的字元

ucfirst — 將所給字元串的第一個字母轉換為大寫

ucwords — 將所給字元串的每一個英文單詞的第一個字母變成大寫

vfprintf — 按照要求對數據進行返回,並直接寫入文檔流

vprintf — 按照要求對數據進行顯示

vsprintf — 按照要求對數據進行返回,但是不輸出

wordwrap — 按照一定的字元長度分割字元串

strtolower()函數把所有字元變成小寫,strtoupper()函數把所有字元變成大寫,ucfirst()函數將所給字元串的第一個字母轉換為大寫,ucwords()函數將所給字元串的每一個英文單詞的第一個字母變成大寫。ucfirst()只處理字元串的首個字元,ucwords()只處理每個單詞的首字母(以空格來界定是否是單詞,「today!Hi」、「today.Hi」 會被認為是一個單詞),對於其餘字母的大小寫狀態並不改變。 ;

Ⅳ PHP如何獲取一個字元串的UTF-8編碼

foreach(unpack(
'n*',
mb_convert_encoding('你好', 'unicode', 'gbk')
) as $i) {
echo '\u',dechex($i);
}

另,你這里的「\u60a8\u597d」其實是unicode編碼,而不是utf-8編碼

Ⅳ PHP正則獲取匹配字元串到數組,如何使用PHP正則獲取指定內容並編號

preg_match_all('/s?ddimg='([^']*)'/is',$Str,$Img);
print_r($Img[1]);

Ⅵ PHP mb_convert_encoding 獲取字元串編碼類型實現代碼

後來又在手冊上找到了is_utf8函數,這樣,再結合iconv函數,我的問題就解決了。下面帖出這個函數:
復制代碼
代碼如下:
function
is_utf8($string)
{
return
preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E]
#
ASCII
|
[\xC2-\xDF][\x80-\xBF]
#
non-overlong
2-byte
|
\xE0[\xA0-\xBF][\x80-\xBF]
#
excluding
overlongs
|
[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
#
straight
3-byte
|
\xED[\x80-\x9F][\x80-\xBF]
#
excluding
surrogates
|
\xF0[\x90-\xBF][\x80-\xBF]{2}
#
planes
1-3
|
[\xF1-\xF3][\x80-\xBF]{3}
#
planes
4-15
|
\xF4[\x80-\x8F][\x80-\xBF]{2}
#
plane
16
)*$%xs',
$string);
}
//
function
is_utf8
如果想深入研究,建議看下PHP手冊上的「Multibyte
String
Functions」這一部分的內容。

Ⅶ PHP怎麼獲取字元串長度

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

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

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



閱讀全文

與php獲取字元串的編碼相關的資料

熱點內容
寧波程序員接私活小程序 瀏覽:491
小六壬pdf 瀏覽:13
怎麼通過快捷指令隱藏手機app 瀏覽:609
方舟手游如何辨別優質伺服器 瀏覽:116
pdf林徽因傳 瀏覽:527
國產區小電影網址 瀏覽:102
西班牙大尺度男男 瀏覽:609
消先的眼角膜電影 瀏覽:434
編譯原理課設項目簡介 瀏覽:921
日本《失樂園》無刪減 瀏覽:227
更新最快的電視劇網站 瀏覽:597
啟動app的廣告怎麼關 瀏覽:850
非sp文中的sp情節的小說 瀏覽:76
女主是被拐賣到大山的小說 瀏覽:858
哆啦a夢美人魚電影 瀏覽:597
舊版本蝌蚪短視頻app怎麼不能 瀏覽:458
電影劇情里有個老頭在雨里騎單車有防 瀏覽:950
日本歐美推理片電影 瀏覽:75
主角穿越到紅軍長征 瀏覽:915
《屍吻》拿走不謝 瀏覽:306