本文目錄一覽:
- 1、php 如何判斷字符是否是utf8編碼
- 2、php怎樣判斷字符串是什麼編碼
- 3、PHP完美判斷字符串是否為utf
- 4、php 中文和編碼判斷代碼
- 5、php 判斷一個字符串里是否有某個字符代碼怎麼寫?
php 如何判斷字符是否是utf8編碼
嚴格來說,不好判斷,但如下方法或許能給你應急處理。function is_utf8_encode($str, $flag=false){static $charset = null;if($charset == null){ //gbk中的漢字,但是滿足utf-8的編碼規範,對於這些漢字當做gbk字符處理$charstr = ‘隴摟簍擄鹵路脳脿謾貓茅錨矛鉚貌貿梅霉煤眉膩膿臎墨艅艌艒奴菐菒菕菙菛菢菤菧蓱傘藝藟藠藡藱螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍危韋違桅圍唯惟偽尾緯未蔚味畏胃喂魏位渭謂尉慰蟺蟻蟽蟿蠀蠁蠂蠄蠅衼袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖嘯笑效楔些歇蠍鞋協挾攜邪斜脅諧寫械卸蟹懈泄瀉謝屑薪芯鋅褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褢’;$charset = str_split($charstr, 2);$charset = array_flip($charset);}$pflag = true;$qflag = false;$len = strlen($str);
php怎樣判斷字符串是什麼編碼
php判斷字符編碼的二個方法:
一個是用php自帶的函數mb_detect_encoding,一個是個人寫函數來處理。
方法1,使用mb_detect_encoding函數。
?
1
2
3
4
?php
$str=」a href=”” 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=”” target=”_blank” class=”infotextkey”iconv/a(『UTF-8′, $c, iconv($c, 『UTF-8′, $string))){//轉換編碼後是不是相等
return $c;
}
}
return null;
}
?
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
php 中文和編碼判斷代碼
編碼範圍1.
GBK
(GB2312/GB18030)
\x00-\xff
GBK雙位元組編碼範圍
\x20-\x7f
ASCII
\xa1-\xff
中文
\x80-\xff
中文
2.
UTF-8
(Unicode)
\u4e00-\u9fa5
(中文)
\x3130-\x318F
(韓文
\xAC00-\xD7A3
(韓文)
\u0800-\u4e00
(日文)
ps:
韓文是大於[\u9fa5]的字符
正則例子:
preg_replace(」/([\x80-\xff])/」,」”,$str);
preg_replace(」/([u4e00-u9fa5])/」,」”,$str);
二、代碼例子
複製代碼
代碼如下:
//判斷內容里有沒有中文-GBK
(PHP)
function
check_is_chinese($s){
return
preg_match(‘/[\x80-\xff]./’,
$s);
}
//獲取字符串長度-GBK
(PHP)
function
gb_strlen($str){
$count
=
0;
for($i=0;
$istrlen($str);
$i++){
$s
=
substr($str,
$i,
1);
if
(preg_match(“/[\x80-\xff]/”,
$s))
++$i;
++$count;
}
return
$count;
}
//截取字符串字串-GBK
(PHP)
function
gb_substr($str,
$len){
$count
=
0;
for($i=0;
$istrlen($str);
$i++){
if($count
==
$len)
break;
if(preg_match(“/[\x80-\xff]/”,
substr($str,
$i,
1)))
++$i;
++$count;
}
return
substr($str,
0,
$i);
}
//統計字符串長度-UTF8
(PHP)
function
utf8_strlen($str)
{
$count
=
0;
for($i
=
0;
$i
strlen($str);
$i++){
$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(‘Not
a
UTF-8
compatible
string’);
}
$count++;
}
return
$count;
}
//截取字符串-UTF8(PHP)
function
utf8_substr($str,$position,$length){
$start_position
=
strlen($str);
$start_byte
=
0;
$end_position
=
strlen($str);
$count
=
0;
for($i
=
0;
$i
strlen($str);
$i++){
if($count
=
$position
$start_position
$i){
$start_position
=
$i;
$start_byte
=
$count;
}
if(($count-$start_byte)=$length)
{
$end_position
=
$i;
break;
}
$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(‘Not
a
UTF-8
compatible
string’);
}
$count++;
}
return(substr($str,$start_position,$end_position-$start_position));
}
//判斷是否是有韓文-UTF-8
(JavaScript)
function
checkKoreaChar(str)
{
for(i=0;
istr.length;
i++)
{
if(((str.charCodeAt(i)
0x3130
str.charCodeAt(i)
0x318F)
||
(str.charCodeAt(i)
=
0xAC00
str.charCodeAt(i)
=
0xD7A3)))
{
return
true;
}
}
return
false;
}
//判斷是否有中文字符-GBK
(JavaScript)
function
check_chinese_char(s){
return
(s.length
!=
s.replace(/[^\x00-\xff]/g,”**”).length);
}
php 判斷一個字符串里是否有某個字符代碼怎麼寫?
先看下我們的代碼,如圖,定義了一個字符串,然後調用php的strpos方法。
result1 = strpos(str, ‘sougou’); // 查找字符sougou在字符串出現的位置。
result2 = strpos(str, ‘sohu’); // 查找字符sohu在字符串出現的位置。
如果查找的字符不在字符串里,即字符串不包含查找的字符,strpos方法就會返回 false.
02
然後是一些輸出代碼,輸出顯示我們的結果
03
運行代碼,看下我們的結果,如圖,字符串里有包含sougou和sohu啊,為什麼結果都顯示不包含的?
04
原來字符串的開始位置是從0開始的,而不是從1開始。0也相當於是false了,我們修改下代碼,判斷代碼里,加多一個等號(=),即是真正的false才是沒找到字符串。
05
再次運行代碼,結果如圖,sougou字符是有查找到了,sohu還是沒有。
06
原來strpos方法是區分大小寫的,字符串里的sohu是大寫的S,所以結果是沒有找到這個sohu的字符串。怎麼修改?我們可以用另一個方法stripos,這個方法是不區分大小的。
原創文章,作者:YCGD6,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/127375.html