[請益] preg_match_all的問題

看板PHP作者 (鍛翼)時間12年前 (2012/05/18 16:16), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串3/4 (看更多)
各位好 我從網頁上抓到一堆字串後,要繼續做抓字串的動作 這一堆的字串規則如下 .............(前略好幾行)....... '''..............(中略好幾行)............... ==...........(後略更多行).............. 目的是要抓「中略好幾行」這堆字串 而我的php function code如下 function get_str($Wikiquery , $WikiStr) { preg_match_all("/[^''']*" .preg_quote($Wikiquery). "[^==]*/u" , $WikiStr , $results); return $results[0][1]; } 雖然可以抓到字串,但是在「前略好幾行」那邊也會有「'''」的符號 所以會抓到前略好幾行中不必要的字串 另外,中略好幾行的開頭一定是「'''」為開頭,但卻不知道是從第幾行開始 請問我該怎麼抓這些字串? 煩麻各位了,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.20.145 ※ 編輯: renmax 來自: 140.129.20.145 (05/18 16:55)

05/18 19:22, , 1F
/\n'''(.*?)\n===/s 還有你的[^ ]用法錯了
05/18 19:22, 1F

05/18 22:14, , 2F
沒錯~^ 只有不在[ ]中的時候才表示行首。
05/18 22:14, 2F

05/18 23:13, , 3F
其實 正規表示法 我還在摸索 第一次接觸......
05/18 23:13, 3F

05/18 23:33, , 4F
剛剛試了一下 return $results[0][1]; 抓不到目標字串
05/18 23:33, 4F

05/18 23:33, , 5F
要在return $results[0][12]; 才會抓的到
05/18 23:33, 5F

05/18 23:37, , 6F
抱歉 我弄錯了 return $results[0][0];就都可以抓到了 謝謝
05/18 23:37, 6F

05/19 12:54, , 7F
還是推薦你方便網站,google搜尋regexr
05/19 12:54, 7F
謝謝您的推薦,但是我現在要處理的字串更加複雜 依據K大提供的正規法,將中間好幾行抓出來之後,要繼續做字串的處理 規則大約如下: '''......'''............[[...]]......[[..]]......<ref xxxxxx>xxxxxxx</ref>... ......[[File:xxxxxxxxxxx]].......。== 我只要這些字串的「......」的內容(包含逗點和句點等標點符號) 而'''和[[以及]]以及<ref xxxxxx>xxxxxxx</ref>加上[[File:xxxxxxxxxxx]] 還有最後的==這些都是不需要的 我只知道 (?<=^|>)[^><]+?(?=<|$) 可以將<ref xxxxxx></ref>去除掉 但是之間的xxxxxx卻無法處理掉,要處理的字串太過複雜 而我昨天才剛接觸正規法,只好來求救各位前輩 不好意思麻煩了,謝謝 ※ 編輯: renmax 來自: 140.129.20.145 (05/19 16:26)
文章代碼(AID): #1FjWL3kd (PHP)
文章代碼(AID): #1FjWL3kd (PHP)