[請益] 有一個關於字串處理的問題..

看板PHP作者 (心痛不如馬上行動)時間17年前 (2008/10/30 00:01), 編輯推噓5(506)
留言11則, 5人參與, 最新討論串1/1
目前打算用 file_get_contents()函式加上preg_match()及REGEXP來做scraping, 問題在於使用file_get_contents()讀出來的字串不是連續的(會有換行的跟TAB), 有方法可以使file_get_contents()讀出來的字串(HTML TAG)變成一串連續的文字嗎? 也就是我需要取得某二個TAG中間的所有文字(包含HTML TAG) EX.. <A> 123 <C> 321 <B> 在我想要得到在<A>和<B>之間的所有內容像是 123 <C> 321 或者是 123<C>321 都可接受, 目前寫出來都只能在單行上面尋找, 因此若由file_get_content()內讀出的字串可以連成一個無分行的字串便能處理, 請教各位有較好的方法嗎? 因為來源的HTML格式有可能更動,所以盡量以REGEXP的方式來做比較好改, 或是請各位前輩指點更好的方式,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.4.206

10/30 00:16, , 1F
/regexp/s 這樣?
10/30 00:16, 1F

10/30 00:32, , 2F
用 preg_replace() 把換行字元刪掉
10/30 00:32, 2F

10/30 00:41, , 3F
用一樓的 //s 就可以直接連斷行都包進去了
10/30 00:41, 3F

10/30 00:49, , 4F
還是不行,是我的寫法有錯嗎?
10/30 00:49, 4F

10/30 00:49, , 5F
#\<div class\=ptitle\>(.*?)\</div\>/s#
10/30 00:49, 5F

10/30 01:05, , 6F
/<div class=ptitle\/>(.*?)<\/div>/s
10/30 01:05, 6F

10/30 01:18, , 7F
一樣不行,假設我需要的tag分別為<div class=ptitle>
10/30 01:18, 7F

10/30 01:18, , 8F
和</div> 上面的寫法也是抓不到
10/30 01:18, 8F

10/30 01:19, , 9F
還沒加/s的時候 單行是沒問題的
10/30 01:19, 9F

10/30 01:22, , 10F
那再加個 m 懶的去找表來看
10/30 01:22, 10F

10/31 09:18, , 11F
試試php_strip_whitespace(),去官方再看詳細
10/31 09:18, 11F
文章代碼(AID): #1928Z5CU (PHP)
文章代碼(AID): #1928Z5CU (PHP)