[请益] 用preg_match_all找pattern

楼主: jacobcan118 (jacobcan118)   2014-04-05 08:50:02
请问我想用preg_match_all找下面的patten怎样写法会比较好?谢谢
$string = "f1/f2/f3/f4"
f1,f2,f3,f4用"/"分开 f1, f2,f3,f4可有可无
f1:数字0到23, 可多个数字,每数字用","分开, 有range形式为 "数字-数字". 如 0,2-23,7
f2:数字1到31,可多个数字,每数字用","分开 如 0,18,9,23,31
f3:数字0到6,可多个数字,每数字用","分开 如 0,1,3,7
f4:数字0到11,可多个数字,每数字用","分开 如 0,1,7,11

$string = ///;
$string = 0,2-23,7//0,1,3,7/;
$string = 1,4/0,5,23/2,0,1,3/0,4;
作者: alog (A肉哥)   2014-04-05 19:55:00
写一个function用explode处理就好个人觉得用preg_match处理这种特殊状况有点难维护code容易有例外
楼主: jacobcan118 (jacobcan118)   2014-04-06 12:37:00
感谢.我原本想用explode再查count(array)再用foreach找不是empty的值不过感觉太麻烦想知道有没更好方法
作者: mmis1000 (秋月恋枫)   2014-04-06 14:57:00
单纯确认格式是办得到拉,但用regex确认数字范围很奇怪啊
楼主: jacobcan118 (jacobcan118)   2014-04-07 05:03:00
感谢.但如果想用regex要如何确认数字0到10.(\d|1\d)吗
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-04-07 12:14:00
这样不是0-19。(\d|10)不就结了。http://www.regextester.com/
楼主: jacobcan118 (jacobcan118)   2014-04-08 12:17:00
抱歉手误是0-19想用preg_match_all出来的array拿值,不过会分不出1和1X
作者: alog (A肉哥)   2014-04-08 16:03:00
explode explode explode foreach等解出来function已经写完了 效能也不错 之后改规则也好调整
作者: mmis1000 (秋月恋枫)   2014-04-08 18:29:00
用(?:分支一|分支二)的写法,可以做出两层以上分支

Links booklink

Contact Us: admin [ a t ] ucptt.com