當前位置:首頁 » 編程語言 » 正則php中文

正則php中文

發布時間: 2025-02-21 13:22:45

『壹』 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正則表達式如何匹配漢字的全部內容,希望大家喜歡。

『貳』 求PHP 的正則表達式 大全

匹配中文字元的正則表達式: [\u4e00-\u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表達式就好辦了 匹配雙位元組字元(包括漢字在內):[^\x00-\xff] 評註:可以用來計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1) 匹配空白行的正則表達式:\n\s*\r 評註:可以用來刪除空白行 匹配HTML標記的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 評註:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於復雜的嵌套標記依舊無能為 匹配首尾空白字元的正則表達式:^\s*|\s*$ 評註:可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表達式 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 評註:表單驗證時很實用 匹配網址URL的正則表達式:[a-zA-z]+://[^\s]* 評註:網上流傳的版本功能很有限,上面這個基本可以滿足需求 匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 評註:表單驗證時很實用 匹配國內電話號碼:\d{3}-\d{8}|\d{4}-\d{7} 評註:匹配形式如 0511-4405222 或 021-87888822 匹配騰訊QQ號:[1-9][0-9]{4,} 評註:騰訊QQ號從10000開始 匹配中國郵政編碼:[1-9]\d{5}(?!\d) 評註:中國郵政編碼為6位數字 匹配身份證:\d{15}|\d{18} 評註:中國的身份證為15位或18位 匹配ip地址:\d+\.\d+\.\d+\.\d+ 評註:提取ip地址時有用 匹配特定數字: ^[1-9]\d*$ //匹配正整數 ^-[1-9]\d*$ //匹配負整數 ^-?[1-9]\d*$ //匹配整數 ^[1-9]\d*|0$ //匹配非負整數(正整數 + 0) ^-[1-9]\d*|0$ //匹配非正整數(負整數 + 0) ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點數 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負浮點數 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點數 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負浮點數(正浮點數 + 0) ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數(負浮點數 + 0) 評註:處理大量數據時有用,具體應用時注意修正 匹配特定字元串: ^[A-Za-z]+$ //匹配由26個英文字母組成的字元串 ^[A-Z]+$ //匹配由26個英文字母的大寫組成的字元串 ^[a-z]+$ //匹配由26個英文字母的小寫組成的字元串 ^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字元串 ^\w+$ //匹配由數字、26個英文字母或者下劃線組成的字元串 /http:\/\/(.*)\//i //匹配外部鏈接地址

滿意請採納

『叄』 怎麼用php正則獲得a標簽內的文字啊

php中正則匹配只要使用這兩個函數:

preg_match_all

preg_match

這里使用preg_match_all,代碼如下:

$subject='<ahref="xxx.php">abc測試</a>';//假設這是需要匹配的字元串

$pattern='/<ahref="[^"]*"[^>]*>(.*)</a>/';//這是匹配的正則表達式

preg_match_all($pattern,$subject,$matches);//開始匹配,該函數會把匹配結果放入$matches數組中


echo"<pre>";
print_r($matches);
/**
結果是:

Array
(
[0]=>Array
(
[0]=>abc測試
)

[1]=>Array
(
[0]=>abc測試
)

)

*/

『肆』 PHP正則表達,漢字大小寫字母數字下劃線以及@符號

郵箱的正則表達式為:/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$/,其他的一樓已經回答得很完備了

『伍』 PHP中文文字正則替換,並將匹配的中文文字加粗

<?php
$str = "中文123美麗abc開心。?我們";
echo preg_replace('#(?:(?![,。?])[xC0-xFF][x80-xBF]+)+#','<b>$0</b>',$str);
//(?:[xC0-xFF][x80-xBF]+) 單個中文字元,不需要引用,因此使用?:
//(?![,。?]) 排除中文標點符號,這里要寫入中文標點
//(?:(?![,。?])[xC0-xFF][x80-xBF]+) 排除中文標點符號後的中文字元
//(?:[xC0-xFF][x80-xBF]+)+ 1個以上的中文字元
//結果 <b>中文</b>123<b>美麗</b>abc<b>開心。?我們</b>
?>

『陸』 php正則表達式匹配一段中文,中間有換行,空白,應該怎麼寫

有多種處理方法:

1、使用[sS]匹配任意字元,而不是使用「.」
2、使用s單行修飾模式,例:$pattern='#abc.*?def#s';//能匹配abc換行def
3、使用s*匹配換行和空格,php里s能匹配空白字元,含換行

php里的中文使用[x7f-xff]表示,因此,使用正則:

$pattern='#[x7f-xff]+(?:s*[x7f-xff]+)*#';即可

熱點內容
ai演算法是什麼 發布:2025-02-22 08:13:48 瀏覽:916
base64編碼php 發布:2025-02-22 08:13:46 瀏覽:752
java日期類 發布:2025-02-22 08:13:05 瀏覽:241
免密支付怎麼取消安卓手機 發布:2025-02-22 08:12:15 瀏覽:273
天龍八部腳本小蘋果 發布:2025-02-22 07:59:19 瀏覽:495
有道詞典java 發布:2025-02-22 07:43:00 瀏覽:854
使命召喚手游外掛腳本防封號 發布:2025-02-22 07:40:49 瀏覽:961
java源文件擴展名 發布:2025-02-22 07:39:33 瀏覽:450
miui版本Android版本 發布:2025-02-22 07:38:51 瀏覽:779
鄰區腳本 發布:2025-02-22 07:01:04 瀏覽:961