【发布时间】:2011-03-17 05:52:07
【问题描述】:
所以,我基本上是在尝试匹配对象标签内(包括)内的任何内容:
<?php preg_match_all('/<object(.*)<\/object>/', $blah, $blahBlah); ?>
它找到了一个匹配项:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="250" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=9048799&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="250" src="http://vimeo.com/moogaloop.swf?clip_id=9048799&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object>
但它不会匹配这个:
<object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5630744&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5630744&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
知道为什么吗?感谢您提供任何见解。
ETA:由于我的方法一开始可能有问题,这里有一些关于我正在尝试做的背景。
这是一个 Wordpress 网站。我正在使用一个将短标签转换为完整视频嵌入代码的插件。该插件最近(谢天谢地)更新以使代码更有效。
我正在尝试创建的功能只是在帖子中找到第一个视频对象,然后将其抓取以在网站的其他地方使用。
这是整个函数(其中一些只有在您使用过 Wordpress 时才有意义):
<?php
function catch_that_video() {
global $post, $posts;
$the_video = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<object(.*)<\/object>/', $post->post_content, $vid_matches);
$the_video = $vid_matches [1] [0];
if(empty($the_video)){ $the_video = 0; }
return $the_video;
}
?>
【问题讨论】:
-
他们似乎都适合我。也许尝试在您的正则表达式中添加一个
s标志。我发现 gskinner.com/RegExr 非常适合测试/调试。 -
你为什么要使用正则表达式解析 HTML?
-
使用 HTML 解析器。为什么?考虑字符串“”。
-
Holly,可能是因为我不知道自己在做什么!施文,好点子。你能给我指出一个关于 HTML 解析的好参考吗?我对所有这些解析都很陌生,但我确实想把它做好。
-
更新了代码,因为我意识到当我添加它时我进入了“自动美化”模式。它现在与输出完全相同(换行符和所有)。
标签: php regex preg-match-all