Re: [請益] 首頁抓取論壇文章,對BBCode的清除。

看板RegExp作者 (-858993460)時間13年前 (2011/02/16 23:24), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《aiyswu (絕望客)》之銘言: : 各位你們好! : 我現在使用的是 phpBB 3.0.8論壇。我的問題是,我有自己特製一個首頁,將論壇 : 的文章撈到前頁來;然而,某些文章需要清除BBCode是一個困擾我的問題。 : BBcode的格式為 : [url:uid]urlstr[/url:uid] : [imgs=num:uid]urlstr[/imgs:uid] : [url=urlstr:uid][img:uid]urlstr[/img:uid][/url:uid] : 等等.. : uid為8位英數混合字串 : 我的作法是 : $str = preg_replace( '@\[.*?\](.*?)\[\/.*?\]@sm', "$1" ,$bbcodestr ); : 仍然會漏掉一些BBcode清不掉。 你這樣等於是把 [ ] 和 [/ ] 一起清 那如果是單一個的 [ ] 而沒有 [/ ] 的就會清不掉 : 一位前輩幫我改寫了regex : $regex = '|[[\/\!]*?[^\[\]]*?]|si'; | |si [[\/\!]*? [ 或 / 或 ! 有0或多個, 不 greedy [^\[\]]*? 非 [ 也非 ] 有0或多個, 不 greedy ] ] 也就是說 邏輯是先抓 [ / ! 的一串 再抓不是 [ ] 的一串 再抓 ] 等於是把開始和結束標籤一視同仁來抓... (不過既然都這樣寫了那個 ungreedy 的 ? 應該也可以不用才對) 話說回來我覺得你的前輩的意思應該是 $regex = '|\[[\/\!]*?[^\[\]]*?]|si'; 這樣前面的意思就變成了 抓一個 [ 再抓 / ! 的一串 (下略) 這樣好像比較對.... : $String = preg_replace($regex, '', $String); : 一下就清掉了............ : 不過我看了很久,卻完全看不懂為什麼它是這樣寫? : 想請問一下,有沒有人可以指點迷津一下呢... -- 1989/02/22 優希堂悟 1990/02/22 冬川こころ 1993/07/05 小町つぐみ 1994/05/21 高江 ミュウ 1995/04 歡迎來到 星野遊々 1997/03/24 守野いづみ 1997/03/24 伊野瀬チサト 1998/06/18 守野くるみ 1999/10/19 打越鋼太郎的 楠田ゆに 2000/02/15 樋口遙 2002/ 12/17 八神ココ 2011/01/11 HAL18於朱倉岳墜機 2011/04/02 ∞與∫的世界 茜崎空啟動 2012/05/21 第貮日蝕計畫預定 2017/05/01~07 LeMU崩壞事故 2019/04/01~07 某大學合宿 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.254.23.234

02/21 17:21, , 1F
感謝! 我再研究看看@@
02/21 17:21, 1F
文章代碼(AID): #1DM-mRoM (RegExp)
討論串 (同標題文章)
文章代碼(AID): #1DM-mRoM (RegExp)