透過cURL抓一張有資料表的頁面,只要得到TR下所有的儲存格,用下面這種方法
<code>$content = 内容; preg_match_all('/<td>(.*?)<\/td>/',$content,$res);</code>
但是有兩種情況無法匹配
<code><td> 内容 </td></code>
和
<code><td class="sorting_1"> 未付 </td></code>
不知道為什麼多了很多空格的單元格和帶class的單元格無法匹配出來?由於不會正則,求一個pattern能夠完全匹配出TD。 還有一個問題,頁面上有兩個table.一個用於各種條件篩選數據,一個盛放數據,如何只匹配盛放數據的那個table呢?
透過cURL抓一張有資料表的頁面,只要得到TR下所有的儲存格,用下面這種方法
<code>$content = 内容; preg_match_all('/<td>(.*?)<\/td>/',$content,$res);</code>
但是有兩種情況無法匹配
<code><td> 内容 </td></code>
和
<code><td class="sorting_1"> 未付 </td></code>
不知道為什麼多了很多空格的單元格和帶class的單元格無法匹配出來?由於不會正則,求一個pattern能夠完全匹配出TD。 還有一個問題,頁面上有兩個table.一個用於各種條件篩選數據,一個盛放數據,如何只匹配盛放數據的那個table呢?
.在單行模式下無法匹配換行。
你可以用
<code>\s 匹配任意的空白符 \S 匹配任意不是空白符的字符</code>
舉一反三啊,匹配帶class的td
<code>/<td[\s\S]*?>([\s\S]+?)<\/td>/</code>
符合其中某個table的,同樣舉一反三啊,先從所有內容中匹配出table到一個數組中.
<code>/<table[\s\S]*?>([\s\S]+?)<\/table>/</code>
然後看你要第幾個,再用上面的正規匹配次不就好了。
還是那句話,舉一反三啊!
<code>$pattern = "/<td.*?>([\s\S]*?)<\/td>/";</code>
我也不太會,應該可以