❶ 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
应该是你想要的结果吧?