- 论坛徽章:
- 0
|
本帖最后由 aboys 于 2011-03-07 16:46 编辑
preg_match('/<table.+?<\/table>/s', $html, $data);
在使用非贪婪模式进行匹配时,当table间有足够多的字符是匹配就会失败,使用贪婪模式亦能匹配,想请问谁知道非贪婪模式限制多少字符?(我想这应该是字符限制的问题,因为我减少一些tr就可以匹配到数据了)- <?php
- $html1 = '<table>';
- $html2 = '01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234';
- $html3 = '</table>';
- for ($i = 40; $i <= 50; $i++) {
- $html = $html1;
- for ($j = 0; $j <= $i; $j++) {
- $html.= $html2;
- }
- $html.= $html3;
- if (preg_match('/<table.+?<\/table>/is', $html)) {
- echo strlen($html) . "=>success<br>";
- } else {
- echo strlen($html) . "=>fail<br>";
- }
- }
复制代码 结果:
85090=>success
87165=>success
89240=>success
91315=>success
93390=>success
95465=>success
97540=>success
99615=>success
101690=>fail
103765=>fail
105840=>fail |
|