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

php正則匹配中文

發布時間: 2025-01-28 23:35:59

php正則表達式中怎麼匹配漢字啊 - 技術問答

匹配中文字元的正則表達式:
[\\u4e00-\\u9fa5]匹配雙位元組字元(包括漢字在內):[^\\x00-\\xff]應用:計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1)String.prototype.len=function(){return
this.replace([^\\x00-\\xff]/g,\"aa\").length;}匹配空行的正則表達式:\\n[\\s|
]*\\r匹配HTML標記的正則表達式:/.*|/匹配首尾空格的正則表達式:(^\\s*)|(\\s*$)

㈡ 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正則表達式匹配(字母、數字、漢字、下劃線)

<?php


$pat='#^([a-zA-Z]+|[0-9]+|[x{4e00}-x{9fa5}]+)$#u';

$s="你好";

var_mp(preg_match($pat,$s));

㈣ PHP正則匹配漢字和半形逗號,開頭和結尾禁止半形逗號、禁止連續兩個半形逗號。自己沒知道OK的,就不要答了

匹配漢字其實與編碼有關系的,UTF8的正則與GBK的正則就會有差別。
我按你的要求改了一個在UTF-8編碼下匹配的,但還沒達到禁止連續兩個半形逗號的要求。你可以先看看,看看有沒有啟發。
$str = "漢,中國,人,字";
if (preg_match("/^[^,][\x{4e00}-\x{9fa5},]+[^,]$/u",$str)) {
print("合法");
} else {
print("不合法");
}
============
如果未能解決兩個半形逗號的問題,其他樓主也可以降低一下要求,分兩次處理。第一次先替換掉雙半解逗號為一個,再使用正則來匹配。
能解決問題是關鍵,方法可以再優化,對不?

㈤ 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正則獲得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模擬登陸抓取數據,無法用正則表達式匹配中文

header()函數是輸出到HTTP頭,和你這個問題是沒有關系的。

真正相關的,是你的源代碼的編碼方式。
我舉個例子,若源代碼文件是採用UTF8編碼,那麼你在抓取到頁面後,先要進行編碼轉換到UTF8!
如,使用iconv:
若抓取到的頁面存放在$contents中:那麼運行$contents=iconv('gb2312','utf-8//IGNORE',$contents);//參數中的IGNORE是忽略錯誤
這樣再進行正則匹配才行。
當然匹配出來的結果也需要用UTF8來正常顯示,所以header()那部分就不用去掉了。

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

有多種處理方法:

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

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

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

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

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

熱點內容
安卓扁頭充電線長什麼樣 發布:2025-01-31 00:18:38 瀏覽:312
ecc簽名演算法 發布:2025-01-31 00:18:30 瀏覽:663
打字軟體蘋果和安卓哪個好用 發布:2025-01-31 00:15:04 瀏覽:238
cftp刪除目錄 發布:2025-01-31 00:02:23 瀏覽:184
匯智凌雲伺服器地址怎麼填 發布:2025-01-31 00:00:49 瀏覽:439
汽車先鋒導航工廠密碼是多少 發布:2025-01-30 23:59:18 瀏覽:356
演算法退出點 發布:2025-01-30 23:59:03 瀏覽:874
巴巴運動網源碼 發布:2025-01-30 23:41:34 瀏覽:160
伺服器能用動態ip 發布:2025-01-30 23:37:15 瀏覽:220
安卓如何親密關系認證 發布:2025-01-30 23:24:41 瀏覽:85