看板 PHP 關於我們 聯絡資訊
詢問的問題是我想切割這個網址:http://tinyurl.com/6c6njg8 找出無名小站文章的網址出來 在原始碼中的第一個內容是 http%3a//www.wretch.cc/blog/love52071835/1953378" ------------------以下是我的程式碼------------------ $url = 目標網址 $fp = file_get_contents($url); $url_count = preg_match_all ( '/http%3a\:\/\/www\.wretch\.cc\/blog\/(.*)\/(.*)/',$fp,$match); $i=0; while($i<10){ $title = $match[i]; echo "Title[$i]: $title </br>"; $i++; } 這樣執行結果一直都沒有東西 想請問問題可能是出在哪裡? 另外不太懂(.*)跟(.+?)的分別 希望可以大概說明一下 謝謝 有違反版規 麻煩請告知 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.255.175.82
buganini:是*跟+的分別,和?的作用; 不是.*跟.+?的分別 05/08 21:30
buganini:*跟+很容易 *就是{0,無限大} +就是{1,無限大} 05/08 21:31
buganini:?的作用就要貪婪的match下去還是停在右邊的也match到處 05/08 21:32
troy1005:以上了解 感謝你 05/08 21:32
buganini:(.*)> 會把abcd>abcd> 裡面的abcd>abcd都吃進去 05/08 21:33
buganini:(.*?)>就只會吃到abcd 05/08 21:33
buganini:通常在parse html的時候很多寫.*?的東西都可以改成 05/08 21:34
buganini:[^>]*> 或是 [^"]*" 這樣效能會好一點 05/08 21:34
想再請問 目前preg_match的問題 該如何解決呢? 改成 preg_match_all ( '/www\.wretch\.cc\/blog\/(.*?)\/(.*?)/',$fp,$match); 執行還是看到不到結果 會是RE方面的問題嗎? ※ 編輯: troy1005 來自: 111.255.175.82 (05/08 21:46)
buganini:確定裡面都有寫FQDN? 後面loop先用print_r()代替 05/08 23:13
buganini:這種文字中很多/的pattern delimiter可以改用!之類的 05/08 23:13
tka:也許用code.google.com/p/phpquery把url抓出來會比較簡單 05/08 23:14
buganini:就不用一直\/ 05/08 23:14