❶ php中怎樣只獲取漢字
我這個測試了一下,支持GB2312編碼和UTF-8編碼,其他編碼下思路類似,只是要找下編碼的起始值就可以了。
function match_chinese($chars,$encoding='utf8'){
$pattern =($encoding=='utf8')?'/[\x{4e00}-\x{9fa5}]/u':'/[\x80-\xFF]/';
preg_match_all($pattern,$chars,$result);
$temp =join('',$result[0]);
return $temp;
}
調用:
$str ="中文漢字English Chars數字12131321";
//UTF-8編碼下
echo match_chinese($str);
//gb2312編碼下
echo match_chinese($str,'gb2312');
❷ 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中文正則匹配
php中utf-8編碼下用正則表達式匹配漢字的最終正確表達式——/^[\x{4e00}-\x{9fa5}]+$/u,
GBK: preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312漢字字母數字下劃線正則表達式。
編輯器查詢或者 js匹配中文
匹配中文字元的正則表達式: [\u4e00-\u9fa5]
或許你也需要匹配雙位元組字元,中文也是雙位元組的字元
匹配雙位元組字元(包括漢字在內):[^\x00-\xff]
❹ php 提取中文後簡單分詞
$str="漢字一二3四5六七八,九十六七...";
$s1=array();//初始化儲存第二步結果的數組
//preg_match_all("/[x80-xff]+/",$str,$match);//此為GBK使用
preg_match_all("/[x{4e00}-x{9fa5}]{2,}+/u",$str,$match);//此為UTF-8使用
foreach($match[0]as$str1)//循環遍歷匹配到的漢字
{
$leng=iconv_strlen($str1,"UTF-8");//計算漢字其長度
for($i=0;$i<$leng-1;$i++)
{
$temp=mb_substr($str1,$i,2,"UTF-8");//將漢字切割長兩個字,得第一步結果
if(!in_array($temp,$s1))//去除重復,得第二步結果
$s1[]=$temp;//得到的漢字存入數組
}
}
//print_r($s1);//第一二步完成,得數組$s1,可列印查看結果
$s2=file_get_contents("21.txt");//將文件內所有字元讀取成一個字元串
$s2=iconv("","UTF-8",$s2);//將字元串轉碼,否則難免有亂碼
//echo$s2;//可輸出查看文件中的內容
$s="";//初始化最終結果的變數
foreach($s1as$j)//遍歷漢字對
{
if(preg_match("/".$j."/",$s2))//判斷該漢字對是否被包含於文件的文字中
$s.=(""==$s)?$j:"\".$j;//將結果合在$s中
}
echo$s;//得結果,可輸出查看或調用
若有疑問,可追問。
注釋詳細,希望能加分
❺ 用PHP正則表達式提取頁面內容
<?php
$theurl="http://www.kitco.cn/cn/";
if (!($contents = file_get_contents($theurl)))
{
echo 'Could not open URL';
exit;
}
/*
$contents=preg_replace('/<.+?>/', '', $contents);
*/
if (preg_match("/<td class=\"tableHeader\" align=\"left\">原油價格([^^]*?)<\/tr>/u",$contents,$matches))
{
print "A match was found:".strip_tags($matches[0]);
} else {
print "A match was not found.<br />";
}
?>
試試這樣
------------------------------------
呵呵,上邊這段已經把你那行注釋掉了,先找到唯一的一段代碼,取出來你想要的以後以後,再去掉標簽,你運行一下試試
運行結果:
A match was found:原油價格 68.11 +0.95
應該是你想要的結果吧?