[請益] 擷取網頁內容時,想把不要的內容排除

看板PHP作者 (鍵盤詩人)時間10年前 (2015/10/19 16:52), 10年前編輯推噓4(406)
留言10則, 4人參與, 最新討論串1/1
我現在要做一個事情,是分析歌詞裡常出現的詞句。 當然首先就要先收集大量的歌詞,我就去常見的歌詞網來 找,他們的歌詞都有寫在網頁的meta裡,像這樣 <meta name="description" content="八卦 黃安作曲 八卦八卦我牽掛" /> 所以很容易用 get_meta_tags就可以截取出來,我擷取出 來以後,先把每一句歌詞後面的空白變成<br>,然後每遇 到一個<br>,就把它放入陣列裡面。這樣echo陣列,就會 印出每一句歌詞。 但是印出陣列時,我發現除了歌詞之外,還會擷取到 詞曲作者的資訊,這不是我需要的,大概會變成這樣: 作詞:黃安<br> 演場:白安<br> /<br> 李慶安<br> 導演:李安<br> 八卦八卦我牽掛<br> 找不到你爸爸<br> 找不到你媽媽<br> 找不到你全家<br> 我目前遇到的兩個問題是,有兩個演唱人時,原本他是用 / 和空白區隔,都被我的<br>處理到了。另一個問題就是 上面提到的,作曲人資訊我完全不需要,有什麼辦法可以 把那些資訊剃除掉呢? 目前想到的方法是,把導演、作詞、作曲等等所有的 資訊都收集起來,做一個判斷式,遇到了就不輸出。可是 這就面臨前一段指出的,雙演唱人誤判的問題。而不先處 理空白變成<br>,把歌詞分段輸入陣列,就不能做判斷, 所以就卡關了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.232.160.76 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1445244735.A.3C0.html ※ 編輯: poeta (36.232.160.76), 10/19/2015 16:52:45

10/19 17:06, , 1F
直接擷取網頁中的會不會比較好 因為顯示在網頁的
10/19 17:06, 1F

10/19 17:06, , 2F
都有換行
10/19 17:06, 2F

10/19 17:08, , 3F
我意思是從<body></body>裡面擷取
10/19 17:08, 3F

10/19 17:10, , 4F
而如果在meta裡面抓 用正則來處理比較好
10/19 17:10, 4F

10/19 23:18, , 5F
substr截取前兩個字 如果==作詞or作曲or編曲 那一項就不
10/19 23:18, 5F

10/19 23:18, , 6F
要echo就好了 至於/的問題 你先把" / "取代成"/" 再把空
10/19 23:18, 6F

10/19 23:19, , 7F
格換成<br>會不會比較容易一點?
10/19 23:19, 7F

10/20 02:56, , 8F
對對,一時沒想到,謝謝兩位。
10/20 02:56, 8F

10/20 09:30, , 9F
作詞 作曲 編曲 原作 翻唱 客串
10/20 09:30, 9F

10/20 09:31, , 10F
如果有歌詞真的是"編曲"開頭就掛了,建議用編曲:
10/20 09:31, 10F
文章代碼(AID): #1M9Ay_F0 (PHP)
文章代碼(AID): #1M9Ay_F0 (PHP)