首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

想不明白的PHP正则有关问题

2012-05-31 
想不明白的PHP正则问题【代码】$str EODHTML...object width425 height350param namemovie

想不明白的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';

热点排行