2010-08-09 64 views
1

我有人插入視頻代碼以顯示在我的網站上。我想確保這些視頻尺寸不超過590像素的寬度。使用PHP獲取某些<object> HTML代碼的尺寸

因此,例如它插入一個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://的鏈接。我試圖玩代碼,但無法弄清楚。如果有幫助,這裏是原始代碼:

$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); 

感謝您的幫助提前!

+0

您應該閱讀此:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags#answer-1732454 – zneak 2010-08-09 04:19:34

回答

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可能是更明智的路要走。也正則表達式可能會寫得更好,但哦。希望能幫助到你。

+0

謝謝Premiso,HTML解析器是去的方式:)欣賞你的幫助! – 2010-08-09 23:26:26