[請益] 用preg_match_all找pattern

看板PHP作者 (jacobcan118)時間11年前 (2014/04/05 08:50), 編輯推噓3(3011)
留言14則, 4人參與, 最新討論串1/1
請問我想用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; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.183.242.84 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1396659004.A.DEA.html

04/05 19:55, , 1F
寫一個function用explode處理就好
04/05 19:55, 1F

04/05 19:55, , 2F
個人覺得用preg_match處理這種特殊狀況有點難維護code
04/05 19:55, 2F

04/05 19:55, , 3F
容易有例外
04/05 19:55, 3F

04/06 12:37, , 4F
感謝.我原本想用explode再查count(array)再用foreach
04/06 12:37, 4F

04/06 12:39, , 5F
找不是empty的值不過感覺太麻煩想知道有沒更好方法
04/06 12:39, 5F

04/06 14:57, , 6F
單純確認格式是辦得到拉,但用regex確認數字範圍很奇怪啊
04/06 14:57, 6F

04/07 05:03, , 7F
感謝.但如果想用regex要如何確認數字0到10.(\d|1\d)嗎
04/07 05:03, 7F

04/07 12:14, , 8F
這樣不是0-19。(\d|10)不就結了。
04/07 12:14, 8F

04/07 12:16, , 9F

04/08 12:17, , 10F
抱歉手誤是0-19想用preg_match_all出來的array拿值,不
04/08 12:17, 10F

04/08 12:17, , 11F
過會分不出1和1X
04/08 12:17, 11F

04/08 16:03, , 12F
explode explode explode foreach
04/08 16:03, 12F

04/08 16:05, , 13F
等解出來function已經寫完了 效能也不錯 之後改規則也好調整
04/08 16:05, 13F

04/08 18:29, , 14F
用(?:分支一|分支二)的寫法,可以做出兩層以上分支
04/08 18:29, 14F
文章代碼(AID): #1JFrCytg (PHP)
文章代碼(AID): #1JFrCytg (PHP)