當前位置:首頁 » 編程語言 » php判斷utf8

php判斷utf8

發布時間: 2025-04-13 07:35:08

A. UTF-8正則表達式如何匹配漢字,utf-8正則表達式_php教程

判斷輸入內容是否含有違法字元,請看下面代碼

$str = "編程";

if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

{

echo "您輸入的[".$str."]含有違法字元";

}

else

{

echo "您輸入的[".$str."]完全合法,通過!";

}

-----------------------

UTF-8匹配:在javascript中,要判斷字元串是中文是很簡單的。

比如:

代碼如下:

var str = "php編程";

if (/^[\u4e00-\u9fa5]+$/.test(str))

{

alert("該字元串全部是中文");

}

else

{

alert("該字元串不全部是中文");

}

php中,是用\x表示十六進制數據的。

於是,變換成如下的代碼:

代碼如下:

$str = "php編程";

if (preg_match("/^[\x4e00-\x9fa5]+$/",$str))

{

print("該字元串全部是中文");

}

else

{

print("該字元串不全部是中文");

}

貌似不報錯了,判斷的結果也正確,不過把$str換成「編程」兩字,結果卻還是顯示「該字元串不全部是中文」,看來這樣的判斷還是不夠准確。

重要:

查閱了《精通正則表達式》發現,對於[\x4e00-\x9fa5]這塊東西,自己做一個強化的解釋php的正則中, [\x4e00-\x9fa5],其實就是 字元和字元組的概念, \x{hex},表達一個16進制數, 需要注意的是hex 可以是1-2位的,也可以是4位的,但是如果是4位的必須加上大括弧,同時,如果是大於x{FF}的hex,必須和u 修飾符連用,不然會非法出錯

網上只能找到匹配全形字元的正則: ^[\x80-\xff]*^/ ,這里可以不加大括弧 [\u4e00-\u9fa5]可以匹配中文,但是PHP又不支持 不過,既然\x表示的十六進制數據,為什麼和js里邊提供的范圍\x4e00-\x9fa5不一樣呢?

於是我就換成了下邊的代碼,發現真的准確了:

代碼如下:

$str = "php編程";

if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

{

print("該字元串全部是中文");

}

else

{

print("該字元串不全部是中文");

}

知道了php中utf-8編碼下用正則表達式匹配漢字的最終正確表達式——/^[\x{4e00}-\x{9fa5}]+$/u, 參考以上文章寫了如下一段測試代碼(復制以下代碼保存成.php文件)

<?php

$action = trim($_GET['action']);

if($action == "sub")

{

$str = $_POST['dir'];

if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str))

{

echo "您輸入的[".$str."]含有違法字元";

}

else

{

echo "您輸入的[".$str."]完全合法,通過!";

}

}

GBK:

代碼如下:

preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312漢字字母數字下劃線正則表達式

以上內容就是PHP中UTF-8正則表達式如何匹配漢字的全部內容,希望大家喜歡。

B. PHP有沒有判斷一個文件或者一段字元串是什麼編碼的函數

測試:將 text1.txt 保存成 ASCII編碼, text2.txt 保存成 UTF-8 編碼

<?php
function chkCode($string){
$code = array('ASCII', 'GBK', 'UTF-8');
foreach($code as $c){
if( $string === iconv('UTF-8', $c, iconv($c, 'UTF-8', $string))){
return $c;
}
}
return null;
}

$file = 'text1.txt';
echo chkCode(file_get_contents($file)); // 輸出ASCII
echo '<br />';

$file = 'text2.txt';
echo chkCode(file_get_contents($file)); // 輸出UTF-8
echo '<br />';
?>

熱點內容
浪潮存儲厚積薄發圖片 發布:2025-04-13 22:37:54 瀏覽:489
sql新建作業 發布:2025-04-13 20:04:15 瀏覽:765
wp磁貼文件夾 發布:2025-04-13 19:49:06 瀏覽:493
桃子神社解壓碼 發布:2025-04-13 19:48:59 瀏覽:852
ubuntu配置nginxphp 發布:2025-04-13 19:30:02 瀏覽:820
小米解壓亂碼 發布:2025-04-13 19:04:57 瀏覽:767
sql2008技術內幕 發布:2025-04-13 19:04:52 瀏覽:498
python中單引號和雙引號 發布:2025-04-13 18:29:57 瀏覽:62
屏密碼怎麼取消 發布:2025-04-13 18:29:56 瀏覽:362
nc伺服器是什麼 發布:2025-04-13 18:14:55 瀏覽:107