php正則匹配出漢字

html源碼中有兩個「知道」,一個是標題,一個鏈接
我的理解,是連接里的

用(?<=<a[^>]+>)(?=(知[\w&;]+|道專[\w&;]*)?</a>)(知[\w&;]+|道[\w&;]*)?
得到的結果屬是:
知 道 (中間有&-n-b-s-p;)
對這個結果,再用一次replace("",「[^\\u4e00-\\u9fa5]+」,"");就可以得到知道了。
這個我無法一次得到。
我不會php哦,不能寫php代碼了。也不知道對樓主的意思理解的對不。要是有問題,請樓主再描述一下。

② php正則匹配中文字元 排除符號

你指的連續,那麼就要求是兩個以上了:

$reg='/[x80-xff]{2,}/';

這個正則是表示匹配兩個位元組以上的多位元組字元(多位元組字元通常高位為 1)。

③ php正則匹配中文亂碼問題

你編碼是gbk造成的,解決方案:把需要用的頁面轉成utf8,如果資料庫是gbk用iconv在轉下碼即可

④ PHP正則表達式驗證是否含有中文

判斷是否有中文。
if (preg_match("/[\x7f-\xff]/", $string)) { echo "true"; }else{ echo "false"; }判斷是否全部是中文
//if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) { //只能在GB2312情況下使用 if (preg_match("/^[\x7f-\xff]+$/", $str)) { //兼容gb2312,utf-8
echo "true";
} else {
echo "false";
}
判斷中文和編碼有關 gbk是雙位元組,utf8是三位元組,可以根據中文的范圍來判斷
編碼范圍1. GBK (GB2312/GB18030)
/x00-/xff GBK雙位元組編碼范圍
/x20-/x7f ASCII
/xa1-/xff 中文
/x80-/xff 中文
2. UTF-8 (Unicode)
/一-/龥 (中文)
/x3130-/x318F (韓文
/xAC00-/xD7A3 (韓文)
/u0800-/一 (日文)
ps: 韓文是大於[/龥]的字元
正則例子:
preg_replace("/([/x80-/xff])/","",$str);
preg_replace("/([一-龥])/","",$str);
希望可以點贊,謝謝。

⑤ php怎麼將中文利用正則表達式匹配出來

正則匹配中文漢字根據頁面編碼不同而略有區別:

GBK/GB2312編碼:[x80-xff]+ 或 [xa1-xff]+

UTF-8編碼:[x{4e00}-x{9fa5}]+/u

$str="賬單123";
//GBK/GB2312使用:
preg_match_all("/[x80-xff]+/",$str,$chinese);
//UTF-8使用:
//preg_match_all("/[x{4e00}-x{9fa5}]+/u",$str,$chinese);
print_r($chinese);

閣下所說的亂碼應該就是編碼沒弄對了

⑥ PHP的正則表達式中使用中文(並匹配中文)的問題,原串為UTF8

<?php
$str = "中國勢力是(煙消雲散、再轉在、匣介)中國、類別置頂帖(來哦見好就收)、炒肉可示、需要城";
$preg2 = "/中國/sim" ;
preg_match_all($preg2, $str, $strResult, PREG_PATTERN_ORDER);
print_r($strResult);
?>
我的PHP文件是UTF-8編碼,不知道你的$str是從哪裡得到的呢?像上面一樣,我直接給$str賦值,這樣使用 /中國/sim 這個表達式沒有任何問題,會不會是你$str字元串的編碼與頁面編碼不一致呢?

⑦ php正則判斷字元串是否含有中文

functionchk_cn($str){
if(preg_match('|[x{4e00}-x{9fa5}]+?|u',$str)){
returntrue;
}
returnfalse;
}

調用這個 函數,返回true則是含有中文,false則無中文。

另外,x{4e00}-x{9fa5} 這個范圍我也不太確定是不是包含所有的中文范圍,沒有認真研究它的取值范圍。

⑧ PHP正則提取中文部分內容,怎麼實現呀

中文可以用正來則表達式進行源匹配,但是具體匹配方法與中文的編碼方式有關:


如果是GBK(GB2312、GB1080),那麼中文的編碼范圍是:

x80-xff


如果是UTF-8編碼,那麼中文的編碼范圍是:

u4e00-u9fa5


那麼匹配漢字的正則表達式可以是:

/[x7f-xff]+/

或者

/[u4e00-u9fa5]+/


例子代碼,顯示文件中的所有漢字(GBK編碼):

<?php
$s=file_get_contents('1.txt');
if(preg_match_all('/[x7f-xff]+/',$s,$r)){
for($i=1;$i<count($r[0]);$i++)echo"$i ".$r[0][$i]." ";
}
?>

⑨ 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正則表達式

在中文字元出現的地方用[^`]+表示,你也可以用其它字元代替「`」,版只要中文字元內處不權可能出現的字元就行。
意思是:不是「`」字元,除了「`」的一切字元,包括中文,重復一次或多次。
為什麼要這樣表示中文字元的集合呢?
可能是因為在正則表達式中沒有表示中文字元的字元類或集合或范圍。甚至[[:print:]]+都不行!
測試如下:
<?php
$str='ffdjsfjshgfhfg<12><模式>d<括弧內的部分>f符類中fs<字元類中可tryrt用的元字元為>:sjssdfsfs,sfsfjksjk,<iogfds12346789>括弧內的部分';

$b='[<][^<]+[>]';//有可能出現中文字元的地方用[^<]+表示
//$b='[<][[:print:]]+[>]';

while(eregi($b,$str,$array))
{
$str_h=str_replace("<","<",$array[0]);
$str_h=str_replace(">",">",$str_h);

echo $str_h."</br>";
$str=str_replace($array[0],'',$str);
}//From J.L
?>