我從一個很長的HTML表格解析信息;現在我正在使用的代碼使用DOMDocument,DOMElement(etc)類來解析。我想要做的運行鍼對Regex'ing出的信息表的當前方法的性能測試,但我不能得到正確的表達。PHP正則表達式中提取內容物從非捕獲
表的HTML行看起來是這樣的:
<tr><td> JON SMITH </td><td> 2000-09-29 </td></tr>
而且我一直在試圖表達看起來是這樣的:
/(?:<td>([a-zA-Z\s]*?)<\/td><td>([0-9-\s]*?)<\/td>)/
上述表達的問題是,它是返回整個行內容而不僅僅是內部列的內容。理想情況下,preg_match_all陣列結果將名稱,日期,姓名,日期等
這是做合理的事情,或者我應該堅持使用DOM技術?如果這是合理的,有人可以藉助正則表達式嗎?
謝謝!
編輯:如果有人在將來遇到這種情況,RegEx解決方案比使用DOM類有更好的性能;在我的情況下,這是秒和分鐘之間的差異。
請從正則表達式解析HTML避免,因爲它會[驅使你į̷̷͚̤̤̖̦͍͗̒̈̅̄n̨͖͓̹͍͎͔͈̝͐ͪ͛̄͛ṣ̷̵̞̦ͤ̅̉̋ͪ͑͛ͥ͜a̷̘͖̮͔͎͛̇̏̒͆̆͘n͇͔̤̼͙̩͖̭ͤ͋̉͌͟eͥ͒͆ͧͨ̽͞҉̹͍̳̻͢(HTTP://計算器.COM /問題/ 1732348 /正則表達式匹配開放標籤,除了-XHTML-自足標籤/ 1732454#1732454)。改爲使用[HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。 – 2012-08-02 13:39:39
感謝您的提示。如前所述,我目前正在使用PHP DOM類進行解析;在這樣的情況下,如果RegEx提供更好的性能,我願意嘗試。通常我會100%同意你的觀點並堅持正確的HTML解析選項。 – 2012-08-02 13:48:29