使用PHP </object>获取某些<object> HTML代码的维度

时间:2010-08-09 04:13:32

标签: php html

我有人插入要在我的网站上显示的视频代码。我想确保这些视频尺寸的宽度不超过590像素。

例如,他们插入一个640 x 385的视频,我的脚本会找出一些新的尺寸,因此宽度只有590像素(例如:590 x 366)...我已经得到了所有的数学和比率的东西计算出来,只需要从中提取高度和宽度,然后用新尺寸替换它们。

以下是获取维度所需的一些代码示例。下面还有代码,但是一旦我想出如何计算出尺寸,我就可以复制

的代码
<object width="640" height="385">
    <param name="movie" value="http://www.youtube.com/v/ik6N1TLL2TI&hl=en_US&fs=1"></param>
    <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
    <embed src="http://www.youtube.com/v/ik6N1TLL2TI&hl=en_US&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed>
</object>

我有一些过去曾帮助过的代码,这些代码会在前面没有http://的链接中添加一个URL。我试着玩代码,但无法弄明白。如果有帮助,这是原始代码:

$content_text = preg_replace('%
    (<a\b[^>]*?href\s*+=\s*+)  # capture first chunk of A tag in group 1
    ("|\'|)                                   # capture HREF attribute delimiter in group 2
    (?!\w++://|/)                        # ensure URL has no scheme nor abs path
    ([^"\' >]++)                         # capture relative URI path in group 3
    \2                                        # match closing delimiter for HREF attribute
    %ix', '$1"' . SITEURL . '/$3"', $content_text);

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

可能会为此通过煤炭,因为您应该使用PHP中的HTML DOM parser。但这里的正则表达式是一种“替代”方法。

preg_match('~<object.*(width|height)=(.*) (width|height)=(.*)(>|\s)~isU', $contents, $matches);
if (!empty($matches)) {
    $dimensions[strtolower($matches[1])] = str_replace(array("'", '"'), '', $matches[2]);
    $dimensions[strtolower($matches[3])] = str_replace(array("'", '"'), '', $matches[4]);
}

HTML Parser可能是更明智的选择,但无论报价或订单如何,上述内容都应抓住宽度和高度,并将其放在$dimensions['width']$dimensions['height']中。

就像我说的,这只是一个替代示例,而HTML Parser可能是更明智的选择。此外,正则表达式也可能写得更好,但哦。希望它有所帮助。