php preg_replace()正则匹配汉字,网上搜的都不对啊!

phppreg_replace()正则匹配汉字,网上搜的都不对啊!... php preg_replace()正则匹配汉字,网上搜的都不对啊! 展开
 我来答
CSer_宽容
推荐于2018-04-11 · 超过13用户采纳过TA的回答
知道答主
回答量:146
采纳率:0%
帮助的人:80.3万
展开全部
匹配任意中文字符(unicode编码):[\x{4e00}-\x{9fff}] (GBK编码):([\xb0-\xfe][\x00-\xff])+ 这是我在阅读《正则指引》一书,书中写的,亲测可行。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小叶顾10
2014-01-03 · TA获得超过256个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:109万
展开全部
/[\x{4e00}-\x{9fa5}]/iu 匹配汉字
/[^\x{4e00}-\x{9fa5}]/iu 匹配非汉字
追问
不对!
我试过好多了,网上都复制过来都不对!
你先运行看看对不对!
$str="汉字";
$return=preg_replace("/[\x{4e00}-\x{9fa5}]/iu","'\\1'",$str);输出$return,发现是把最后一个字变成了'',
追答
首先回复一下你,对于中文的匹配是很正确的!因为的确把中文给替换掉了!问题出在你要替换的字符上面!
preg_replace("/(.*)/","$1",$str);想必这样的写法你肯定是清楚什么意思的,$1是正则中第一个小括号中的内容!
而你的问题里面\\1是等同于$1的,但是你的正则中没有小括号,所以\\1就什么都没匹配到,所以最后仅仅把单个汉字替换成了两个单引号''
这么解释你能明白吗?如果你不明白你可以尝试下
$str="汉字";
echo preg_replace("/([\x{4e00}-\x{9fa5}])/iu","'\\1'",$str);
输出结果是 '汉''字'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
octstonewk
2021-04-12 · TA获得超过9700个赞
知道大有可为答主
回答量:3786
采纳率:50%
帮助的人:1644万
展开全部
汉字在Unicode中称作CJK 统一表意符号 (CJK Unified Ideographs),包括U+3400-U+4DBF/U+4E00-U+9FFF/U+20000-U+3FFFD,参见百度百科【统一码】。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4c69616
2014-01-11 · TA获得超过120个赞
知道小有建树答主
回答量:228
采纳率:50%
帮助的人:182万
展开全部
匹配输入汉字:"^[\u4e00-\u9fa5]{0,}$"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宇宙大师之一
2014-01-10 · TA获得超过3476个赞
知道小有建树答主
回答量:2271
采纳率:52%
帮助的人:712万
展开全部
echo preg_match('/[^x00-xff]+/','中文');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式