作者renmax (鍛翼)
看板PHP
標題[請益] preg_match_all的問題
時間Fri May 18 16:16:00 2012
各位好
我從網頁上抓到一堆字串後,要繼續做抓字串的動作
這一堆的字串規則如下
.............(前略好幾行).......
'''..............(中略好幾行)...............
==...........(後略更多行)..............
目的是要抓「中略好幾行」這堆字串
而我的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)
1F:推 knuckles:/\n'''(.*?)\n===/s 還有你的[^ ]用法錯了 05/18 19:22
2F:→ MOONRAKER:沒錯~^ 只有不在[ ]中的時候才表示行首。 05/18 22:14
3F:→ renmax:其實 正規表示法 我還在摸索 第一次接觸...... 05/18 23:13
4F:→ renmax:剛剛試了一下 return $results[0][1]; 抓不到目標字串 05/18 23:33
5F:→ renmax:要在return $results[0][12]; 才會抓的到 05/18 23:33
6F:→ renmax:抱歉 我弄錯了 return $results[0][0];就都可以抓到了 謝謝 05/18 23:37
7F:→ MOONRAKER:還是推薦你方便網站,google搜尋regexr 05/19 12:54
謝謝您的推薦,但是我現在要處理的字串更加複雜
依據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)