完美字符編碼判斷php代碼(完美字符編碼判斷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-hant/n/127375.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YCGD6的頭像YCGD6
上一篇 2024-10-03 23:15
下一篇 2024-10-03 23:15

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 英語年齡用連字符號(Hyphenation for English Age)

    英語年齡通常使用連字符號表示,比如 “five-year-old boy”。本文將從多個方面探討英語年齡的連字符使用問題。 一、英語年齡的表達方式 英語中表…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • KeyDB Java:完美的分布式高速緩存方案

    本文將從以下幾個方面對KeyDB Java進行詳細闡述:KeyDB Java的特點、安裝和配置、使用示例、性能測試。 一、KeyDB Java的特點 KeyDB Java是KeyD…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在着手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29

發表回復

登錄後才能評論