php正则匹配汉字
⑴ php正则匹配出汉字
html源码中有两个“知道”,一个是标题,一个链接
我的理解,是连接里的
用(?<=<a[^>]+>)(?=(知[\w&;]+|道[\w&;]*)?</a>)(知[\w&;]+|道[\w&;]*)?
得到的结果是:
知 道 (中间有&-n-b-s-p;)
对这个结果,再用一次replace("",“[^\\u4e00-\\u9fa5]+”,"");就可以得到知道了。
这个我无法一次得到。
我不会php哦,不能写php代码了。也不知道对楼主的意思理解的对不。要是有问题,请楼主再描述一下。
⑵ 求一个PHP正则表达式匹配(字母、数字、汉字、下划线)
<?php
$pat='#^([a-zA-Z]+|[0-9]+|[x{4e00}-x{9fa5}]+)$#u';
$s="你好";
var_mp(preg_match($pat,$s));
⑶ 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正则表达式匹配汉字、字母、数字、下划线
preg_match("/[a-z]{3,14}/",$content,[可选]$a);这个返回布尔值,$a得到的是数组,把匹配到的字符防在$a;
我之能举这个给你了。。汉字可以网上去查。
还有表达试 去看看 我也记不得了。。
⑸ 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正则匹配中文乱码问题
当然乱码啦,一个汉字在php里是三个字符,你这样直接用.去匹配任意字符的话,三个.才等于一个汉字。你把一个汉字给截取掉了,当然乱码了,不信你把你的0,10改成0,11。就不乱码的,而且只匹配出两个汉字。汉字不是这样去匹配的,有专门匹配汉字的正则,
⑺ php中如何用正则表达式匹配中文字符呢
php中匹配一个或多个中文字符(包含简体和繁体中文字符)的正则表达式如下:/[[b]\x{4e00}-\x{9fa5}]+/注意:php中正则表达式的16进制是以
\x
开头的。
⑻ PHP正则匹配汉字和半角逗号,开头和结尾禁止半角逗号、禁止连续两个半角逗号。自己没知道OK的,就不要答了
匹配汉字其实与编码有关系的,UTF8的正则与GBK的正则就会有差别。
我按你的要求改了一个在UTF-8编码下匹配的,但还没达到禁止连续两个半角逗号的要求。你可以先看看,看看有没有启发。
$str = "汉,中国,人,字";
if (preg_match("/^[^,][\x{4e00}-\x{9fa5},]+[^,]$/u",$str)) {
print("合法");
} else {
print("不合法");
}
============
如果未能解决两个半角逗号的问题,其他楼主也可以降低一下要求,分两次处理。第一次先替换掉双半解逗号为一个,再使用正则来匹配。
能解决问题是关键,方法可以再优化,对不?
⑼ 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里,包含数字、字母、下划线或中文的正则表达式如下:$pattern = "/[0-9a-zA-Z_\x80-\ff]+/";