[請益] preg_replace的一個問題

看板PHP作者 (夏天到了,冷不起來了說)時間15年前 (2010/05/28 16:31), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
看網路上有些CMS,都會有把網址轉靜態的模組 大概是這樣 $urlin=array(); $urlout=array(); return preg_replace($urlin,$urlout,$url); 我比較好奇的是這些模組的例子 $urlin= array( "'(?<!/)modules.php\?name=Forum....'", ....) 裡面的 (?<!/) ,一般來說被()包圍起來的不是要拿來引用裡面的值嗎? 為何$1卻不是這個值呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.218.220.74

05/28 16:40, , 1F
它前後不是被引號包住了嗎?"...."中間內容都當成一般字串
05/28 16:40, 1F
完整的是 "'(?<!/)modules.php\?name=Forums&file=viewtopic&t=([0-9]*)&start =([0-9]*)&postdays=([0-9]*)&postorder=(desc|asc)&highlight=([A-Za-z0-9_-]*)'", ,後面被包起來的就會被引用,所以應該不是這個原因吧?

05/28 20:17, , 2F
看不懂你的問題...
05/28 20:17, 2F
簡單的說...就是(?<!/)在preg_replace函裡 似乎是一種特殊的表示法,而不屬於比對項目 ※ 編輯: JYHuang 來自: 210.64.83.218 (05/29 00:11)

05/29 02:05, , 3F

05/29 02:05, , 4F
regexp.reference.subpatterns.php 自行連接
05/29 02:05, 4F

05/29 02:10, , 5F
05/29 02:10, 5F

05/29 02:10, , 6F
regexp.reference.assertions.php 就是你要的答案
05/29 02:10, 6F

05/29 03:20, , 7F
感謝
05/29 03:20, 7F
文章代碼(AID): #1B_tzfR6 (PHP)
文章代碼(AID): #1B_tzfR6 (PHP)