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

WBOY
發布: 2016-08-04 09:19:25
原創
1239 人瀏覽過

透過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>
登入後複製

我也不太會,應該可以

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!