热搜:NVER node 开发 php

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

2024-09-14 22:45:01
php正则匹配汉字结尾的字符串

本帖最后由 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,就错误啊