首頁 >後端開發 >php教程 >正規表示式 - 求解一個PHP正規符合pattern?

正規表示式 - 求解一個PHP正規符合pattern?

WBOY
WBOY原創
2016-08-04 09:19:251300瀏覽

透過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>

我也不太會,應該可以

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn