我繼承了一段突然無法工作的代碼。它試圖使用正則表達(dá)式來匹配 HTML 內(nèi)容中的各種數(shù)據(jù)。我不確定是因?yàn)?HTML 內(nèi)容中的間距最近發(fā)生了變化,還是存在更大的問題。我可以在單個(gè)數(shù)據(jù)上設(shè)置較小的匹配,但我寧愿將它們?nèi)勘4嬖谝粋€(gè) preg_match_all 調(diào)用中。這是相關(guān)代碼的示例,以及顯示其執(zhí)行情況的沙盒鏈接。http://sandbox.onlinephpfunctions.com/code/2ebb3707a5d8cd5871005b4e77076cd230a8abca$html_content = '<tr> <td class=""> <span class="new">1111</span> </td> <td data-order="title1"><a href="test.php?id=1111">title1</a></td> <td data-order="20190917000000">09/2019</td> <td data-order="1">$1</td> <td>02/18/2020</td> </tr> <tr> <td class=""> <span class="new">2222</span> </td> <td data-order="title2"><a href="test.php?id=2222">title2</a></td> <td data-order="20190917000000">09/2019</td> <td data-order="2">$2</td> <td>01/13/2020</td> </tr> <tr> <td class=""> <span class="new">3333</span> </td> <td data-order="title3"><a href="test.php?id=3333">title3</a></td> <td data-order="20190917000000">09/2019</td> <td data-order="5">$5</td> <td>01/13/2020</td> </tr>';$content_array = array(); preg_match_all('%>(\d+)</span>\s+</td>\s+<td data-order=".+?"><a href="(.+?)">.+?</a></td>\s+<td data-order="(\d+)000000">\d+/\d+</td>\s+<td data-order="\d+">\$\d+</td>\s+<td>(\d+/\d+/\d+)</td>\s+<td>(\d+/\d+/\d+)</td>%', $html_content, $content_array);print_r($content_array);
1 回答

守著一只汪
TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
正則表達(dá)式需要 2 個(gè)單元格,最后有日期:
<td>(\d+/\d+/\d+)</td>\s+<td>(\d+/\d+/\d+)</td>
而你只有一個(gè):
<td>01/13/2020</td>
如果您從它匹配的正則表達(dá)式中刪除額外的日期單元格:
>(\d+)</span>\s+</td>\s+<td data-order=".+?"><a href="(.+?)">.+?</a></td>\s+<td data-order="(\d+)000000">\d+/\d+</td>\s+<td data-order="\d+">\$\d+</td>\s+<td>(\d+/\d+/\d+)</td>
- 1 回答
- 0 關(guān)注
- 105 瀏覽
添加回答
舉報(bào)
0/150
提交
取消