免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2637 | 回复: 5
打印 上一主题 下一主题

preg_match_all的用法 [复制链接]

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-30 21:34 |只看该作者 |倒序浏览
遇到正则方面的东西就头疼,实在读不懂了,来向各位老大求助:

原文:
  1. $content = "#测试 #abc";//utf-8编码
  2. $count = preg_match_all('/(?:^|\s)#([\pL\pN_\-\.]{1,64})/', strtolower($content), $match);
复制代码


表现:$match[1][0]为乱码。$match[1][1]正常

问题:(1)乱码可能是哪些原因导致的?
   (2)[\pL\pN_\-\.] 是什么意思?应该怎么断句?
   (3)pcre有兼容性问题吗?另一个机器上结果正常。

论坛徽章:
0
2 [报告]
发表于 2009-10-31 02:06 |只看该作者
[\pL\pN_\-\.] 意为中英文、下划线、减号、句点

/^[\x{4e00}-\x{9fa5}]+$/u
utf-8中文用这个更好点?

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
3 [报告]
发表于 2009-11-01 08:10 |只看该作者
多谢,正规看懂了,但是结果在freebsd8下还是乱码,freebsd7下的正常,有点郁闷。

论坛徽章:
0
4 [报告]
发表于 2009-11-03 14:20 |只看该作者
正则的最后应该加上一个 u 呢。

\p 的用法,手册说:...are available when UTF-8 mode is selected.

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
5 [报告]
发表于 2009-11-03 22:09 |只看该作者
又郁闷了两天,在一个系统上面,不加/u也跑得正常,而在另一个系统上面,不加/u就乱码!实在搞不懂了。

乱码的系统,用的pear中的东西,对象足足跳了十多个,都懒得追踪问题所在了......:wink:

怀疑是pcre的问题,但是两个机器把pcre做的一样也不行。

论坛徽章:
0
6 [报告]
发表于 2009-11-03 22:23 |只看该作者
版本是否相同?运行环境呢?还有就是文件是否都保存为 UTF-8?

毕竟 PHP 自身也存在 BUG 的可能性,最好是按照标准来写代码,这样如果有 PHP 自己有 BUG 的话,查起来也容易。

不按手册的做法而最后仍然成功的 case 应属于「unpredictable behaviour」,应当避免。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP