php正则匹配汉字结尾的字符串

WBOY
发布: 2016-06-23 14:12:50
原创
1622 人浏览过

本帖最后由 zhuzhaodan 于 2013-06-09 00:04:00 编辑

UTF-8格式
$str = "289dfh第一个匹配     jdfh388第二个匹配  jfsj83第三个匹配 sjfsui"
要匹配出 1)289dfh第一个匹配
         2)jdfh388第二个匹配
         3)jfsj83第三个匹配

回复讨论(解决方案)

本帖最后由 xuzuning 于 2013-06-09 07:05:36 编辑

$str = "289dfh第一个匹配     jdfh388第二个匹配  jfsj83第三个匹配 sjfsui";preg_match_all('/\w+[\x{4e00}-\x{9fa5}]/iu', $str, $r);print_r($r[0]);
登录后复制
Array
(
[0] => 289dfh第一个匹配
[1] => jdfh388第二个匹配
[2] => jfsj83第三个匹配
)

我想用环视做,左边不以汉字开头做界,右边以汉字结尾做界,这样怎么写呢?

<?php$str = "289dfh第一个匹配     jdfh388第二个匹配  jfsj83第三个匹配 sjfsui   汉字开头的不要    haha这个要";preg_match_all('/\s*(?![\x{4e00}-\x{9fa5}])\w+[\x{4e00}-\x{9fa5}]+/iu', $str, $r);print_r($r[0]);
登录后复制
登录后复制


你指的是这个不?
否定顺序环就可以啦 ~~~

我想用环视做,左边不以汉字开头做界,右边以汉字结尾做界,这样怎么写呢?

你这个是黑名单做法,范围太大了,应该改用白名单,规定开头是什么才对

<?php$str = "289dfh第一个匹配     jdfh388第二个匹配  jfsj83第三个匹配 sjfsui   汉字开头的不要    haha这个要";preg_match_all('/\s*(?![\x{4e00}-\x{9fa5}])\w+[\x{4e00}-\x{9fa5}]+/iu', $str, $r);print_r($r[0]);
登录后复制
登录后复制


你指的是这个不?
否定顺序环就可以啦 ~~~

为什么把结尾的/iu去掉,会报错
Compilation failed: character value in \x{...} sequence is too large at offset 8

/iu

i表示忽略大小写
u表示utf8

/iu

i表示忽略大小写
u表示utf8

把U去掉,显示错误,为什么不指定U,就错误啊

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板