我要采集一个网站,必须一个正则能抓去里面的指定数据preg_match('/<title>(.*?)<\/title>.*?(<div class="test">(.*?)<\/div>){3,5}/is',$html, $mtach);<div class="test">(.*?)<\/div> 这样的div里面有几个,数目不一定,但是也不能用preg_match_all,因为还有其他的数据要抓。我想知道 <div class="test">(.*?)<\/div>{3,5} 这样的有法子能用吗(php){3,5}我知道可行但是里面还有(.*?),而且还不是贪婪匹配,我测试了,匹配不到,但<div class="test">(.*?)<\/div>{1}就能匹配到一次各位高手。
preg_match('/<title>(.*?)<\/title>.*?(<div class="test">(.*?)<\/div>){3,5}/is',$html, $mtach);(<div class="test">(.*?)<\/div>){3,5} 和 (?:<div class="test">(.*?)<\/div>){3,5} 我测试了,匹配不到<div class="test">(.*?)<\/div>要匹配的次数不是一定的
<div class="test">1</div>
<div class="test">2</div>
<div class="test">3</div>
<div class="test">4</div>
<div class="test">5</div>
<div class="test">6</div>
DOC;
preg_match('/(?:<div class="test">(.*?)<\/div>\s*){3,5}/s', $str, $m);
echo $m[0];结果
<div class="test">1</div>
<div class="test">2</div>
<div class="test">3</div>
<div class="test">4</div>
<div class="test">5</div>
但是实际上$m[0]不是要取得的结果啊,
要求是这样的
$m[1] => <div class="test">1</div>
$m[2] => <div class="test">2</div>
$m[3] => <div class="test">3</div>
$m[4] => <div class="test">4</div>
$m[5] => <div class="test">5</div>
preg_match('/(?:<div class="test">(.*?)<\/div>\s*){3,5}/s', $str, $m);要求结果是这样哦,呵呵
要求是这样的
$m[1] => 1
$m[2] => 2
$m[3] => 3
$m[4] => 4
$m[5] => 5目前的结果是$m只有$m[0]和 $m[1] => 5