想不明白的PHP正则问题
【代码】
$str= <<<EOD
HTML...
<object width="425" height="350">
<param name="movie" value="http://www.atungm.com/v/AyPzM5WK8ys" />
<embed src="http://www.atungm.com/v/AyPzM5WK8ys" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" ></embed>
</object>
HTML...
EOD;
$reg1='/<object[^>]*>(.(?!<embed))*/s';
$reg2='/<embed(.+<\/embed>|[^>]+>)/s';
$reg3='/<object[^>]*>(.(?!<embed))*<embed(.+<\/embed>|[^>]+>)/s';
preg_match ($reg1,$str,$out1);
preg_match ($reg2,$str,$out2);
preg_match ($reg3,$str,$out3);
echo "$str\n\n\n<pre>";
print_r($out1);
print_r($out2);
print_r($out3);
【输出】
HTML...
<object width="425" height="350">
<param name="movie" value="http://www.atungm.com/v/AyPzM5WK8ys" />
<embed src="http://www.atungm.com/v/AyPzM5WK8ys" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" ></embed>
</object>
HTML...
<pre>
Array
(
[0] => <object width="425" height="350">
<param name="movie" value="http://www.atungm.com/v/AyPzM5WK8ys" />
[1] =>
)
Array
(
[0] => <embed src="http://www.atungm.com/v/AyPzM5WK8ys" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" ></embed>
[1] => src="http://www.atungm.com/v/AyPzM5WK8ys" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" ></embed>
)
Array
(
)
【问题】
正则表达式1、正则表达式2分别准确完整地匹配到目标字符串的前后两部分;
正则表达式3是正则表达式1、正则表达式2的整合,却出现了问题,匹配不到内容;
尝试了好久也找不出,正则表达式1、正则表达式2之间有什么冲突的地方?
我只有14分资源分,全部给了也就这么多了。
不知道哪位高手能指导一下?
------解决方案--------------------
$reg3='/<object[^>]*>(.(?!<embed))*\s*<embed(.+<\/embed>|[^>]+>)/s';