php字元串utf
⑴ 怎樣設置php的編碼格式為utf-8
在 PHP 編寫過程中,一般需要注意的是三種編碼:
1、網頁字元編碼
2、文件字元編碼
3、資料庫字元編碼
只有上面3種編碼的格式都一致的情況下,才會盡可能的避免亂碼的出現。
二、如何使用Notepad++軟體設置UTF-8編碼:
用 Notepad++ 軟體打開指定的 php 文檔後,在「格式」菜單下找到「以UTF-8格式編碼"
以xxx編碼的意思是不強制轉換文件的編碼,僅僅以某種編碼來查看,不會對文件進行修改,這對打開某個文件發現都是亂碼時非常實用。
轉為xxx編碼的意思就是將文件內容強制轉換為某種編碼,這對於本來看到的就不是亂碼但需要調整右下角的文件編碼時非常好用。
⑵ php 字元串為utf8怎麼判斷為空
php判斷字元串是否為空,用到的工具:notepad++,步驟如下:
1.
<?php
$a='0';
$b='';
$c=array();
$d='abcdef'
if(empty($a))echo'$a為空'."<br/>";
if(empty($b))echo'$b為空'."<br/>";
if(empty($c))echo'$c為空'."<br/>";
if(empty($d))echo'$d為空';
?>
說明:empty就是判斷字元串是否為空。
2.輸出結果:$a為空,$b 為空,$c 為空。
注意事項:empty 可以將值為 "假"、"空"、"0"、"NULL"、"未初始化" 的變數都判斷為TRUE,判斷字元串是否為空還有isset函數可用,用法類似。
⑶ 在php中,怎樣把字元串轉為UTF-8位元組數組
設置編碼utf-8
mysql_query('set
names
utf8');
或者是
header("content-type:
text/html;
charset=utf-8");
這個放在頭部(之前不能有輸出)
⑷ 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中如何把一個字元串轉換為utf-8編碼的 如題 謝謝了
1、把 GBK 編碼字串轉換成 UTF-8 編碼字串 view plain to clipboardprint? <?php header("content-Type: text/html; charset=Utf-8"); echo mb_convert_encoding("你是我的好朋友","UTF-8","GBK"); ?> 2、把 UTF-8 編碼字串轉換成 GB2312 編碼字串 view plain to clipboardprint? // 注意將此文件存檔成 utf-8 編碼格式文件再測試 <?php header("content-Type:text/html;charset=gb2312"); echo mb_convert_encoding("你是我的好朋友","gb2312","utf-8"); ?> // 注意將此文件存檔成 utf-8 編碼格式文件再測試 <?php header("content-Type: text/html; charset=gb2312"); echo mb_convert_encoding("你是我的好朋友","gb312","utf-8"); ?> 3、對整個頁面進行轉換 該方法適用所有編碼環境。這樣把前128個字元以外(顯示字元)的字元集都用 NCR(Numeric character reference,如「漢字」將轉換成「汉字」這種形式)來表示,這樣的編碼在任意編碼環境下頁面都能正常顯示。 在php文件的頭部加上下面三行代碼: view plain to clipboardprint? mb_internal_encoding(」gb2312″); // 這里的gb2312是你網站原來的編碼 mb_http_output(」HTML-ENTITIES」); ob_start(』mb_output_handler』); mb_internal_encoding(」gb2312″); // 這里的gb2312是你網站原來的編碼 mb_http_output(」HTML-ENTITIES」); ob_start(』mb_output_handler』); 使用mb_convert_encoding 函數需啟用PHP 的mbstring (multi-byte string)擴展
⑹ php 截取utf-8格式的字元串實例代碼
php
截取utf-8格式的字元串
php中,我們經常需要截取字元串。英文字元佔用一個位元組,中文字元佔用兩個位元組,但中文字元佔用兩個位元組是相對於GBK編碼而言但是在時下國際流行的UTF8編碼中,一個中文字元佔用3個位元組。本文章向大家介紹一個php
截取utf-8格式字元串的函數。
舉例說明:
function
truncate_utf8_string($string,
$length,
$etc
=
'...')
{
$result
=
'';
$string
=
html_entity_decode
(
trim
(
strip_tags
(
$string
)
),
ENT_QUOTES,
'UTF-8'
);
$strlen
=
strlen
(
$string
);
for($i
=
0;
(($i
<
$strlen)
&&
($length
>
0));
$i
++)
{
if
($number
=
strpos
(
str_pad
(
decbin
(
ord
(
substr
(
$string,
$i,
1
)
)
),
8,
'0',
STR_PAD_LEFT
),
'0'
))
{
if
($length
<
1.0)
{
break;
}
$result
.=
substr
(
$string,
$i,
$number
);
$length
-=
1.0;
$i
+=
$number
-
1;
}
else
{
$result
.=
substr
(
$string,
$i,
1
);
$length
-=
0.5;
}
}
$result
=
htmlspecialchars
(
$result,
ENT_QUOTES,
'UTF-8'
);
if
($i
<
$strlen)
{
$result
.=
$etc;
}
return
$result;
}
如果需要截取utf-8格式的字元串,直接調用這個函數即可。
<?php
$str="如果需要截取utf-8格式的字元串,直接調用這個函數即可。";
echo
truncate_utf8_string($str,10);//輸出結果:如果需要截取utf-8格...
?>
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
⑺ php裡面怎樣把utf-8編碼的字元串 (如 \u5e7f), 重新解碼成中文,多謝
這種字元串是unicode編碼的,而不是utf-8。json_decode()可以自動將json中的unicode字元串轉換為utf-8。你可以自己構造一個json來實現。
12345<?php$str = '\u5e7f\u4e1c\u6df1\u5733';$json = '{"foo":"' . $str . '"}';$d = json_decode($json, true);$str = $d['foo']; // 這個就是你想要的
望採納!
⑻ PHP如何獲取中文字元串長度 utf8
PHP對中文字元串的處理一直困擾於剛剛接觸PHP開發的新手程序員。下面簡要的剖析一下PHP對中文字元串長度的處理:
PHP自帶的函數如strlen()、mb_strlen()都是通過計算字元串所佔位元組數來統計字元串長度的,一個英文字元佔1位元組。例:
$enStr = 『Hello,China!』;
echo strlen($enStr); // 輸出:12
而中文則不然,做中文網站一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能兼容更多的字元,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔位元組也有差異。
gbk編碼下每個中文字元所佔位元組為2,例:
$zhStr = 『您好,中國!』;
echo strlen($zhStr); // 輸出:12
utf-8編碼下每個中文字元所佔位元組為3,例:
$zhStr = 『您好,中國!』;
echo strlen($zhStr); // 輸出:18
那麼如何計算這組中文字元串的長度呢?有人可能會說gbk下獲取中文字元串長度除以2,utf-8編碼下除以3不就行了嗎?但是您要考慮字元串並不老實,99%的情況會以中英混合的情況出現。
這是WordPress中的一段代碼,主要思想就是先用正則將字元串分解為個體單元,然後再計算單元的個數即字元串的長度,代碼如下(只能處理utf-8編碼下的字元串):
$zhStr = 『您好,中國!』;
$str = 『Hello,中國!』;
// 計算中文字元串長度
function utf8_strlen($string = null) {
// 將字元串分解為單元
preg_match_all(「/./us」, $string, $match);
// 返回單元個數
return count($match[0]);
}
echo utf8_strlen($zhStr); // 輸出:6
echo utf8_strlen($str); // 輸出:9
⑼ PHP完美判斷字元串是否為utf
完美判斷函數:
function is_utf8($gonten){if (preg_match(/^([.chr(228).-.chr(233).]{1}[.chr(128).-.chr(191).]{1}[.chr(128).-.chr(191).]{1}){1}/,$word) == true || preg_match(/([.chr(228).-.chr(233).]{1}[.chr(128).-.chr(191).]{1}[.chr(128).-.chr(191).]{1}){1}$/,$word) == true || preg_match(/([.chr(228).-.chr(233).]{1}[.chr(128).-.chr(191).]{1}[.chr(128).-.chr(191).]{1}){2,}/,$word) == true){return true;}else{return false;}}使用方法 is_utf8($gonten)就可以判斷字元串$gonten是否為utf-8編碼了。
網上流傳著這樣一個判斷函數,其實這函數判斷是不完整的,函數如下
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