2011-02-27 97 views
1

任何人都可以幫助我解釋爲什麼下面的代碼僅適用於對象代碼中寬度/高度的第一個實例。我需要更換這兩個使用「高度:XXX;寬度:XXX」的樣式,然後同時更換實際嵌入的高度=「XXX」和寬度=「XXX」Preg替換視頻對象代碼 - 僅適用於第一個實例

這裏的預浸料取代:

$vid_object = preg_replace('~((width)\s?[=:]\s?[\'"]?)[0-9]+~i','${1}600',$vid_object); 

$vid_object = preg_replace('~((height)\s?[=:]\s?[\'"]?)[0-9]+~i','${1}364',$vid_object); 

這裏的視頻輸出:

<object style="height: 364px; width: 600px"><param name="movie" value="http://www.youtube.com/v/UF06-2Q0-G0?version=3"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/UF06-2Q0-G0?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"></object> 

我認爲這事做的代碼替換零件「$ {1} 600」或限制結果,到第一個實例。

任何幫助,非常感謝。當正則表達式不是我的專長時浪費了太多的時間。 感謝 尼古拉斯

回答

0

嘗試

$vid_object=preg_replace('/(width[\s:=\'"]+)\d+/i','${1}600',$vid_object); 
$vid_object=preg_replace('/(height[\s:=\'"]+)\d+/i','${1}364',$vid_object); 

這是一個有點寬。

當我運行的代碼,你提供我得到

<object style="height: 364px; width: 600px"><param name="movie" value="http://www.youtube.com/v/UF06-2Q0-G0?version=3"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/UF06-2Q0-G0?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="600" height="364"></object> 
+0

我希望,但它沒有奏效。這也適用於第一對高度/寬度但不是第二對。感謝您給它一個旋轉。我不認爲用我的PHP代碼有什麼奇怪的,但也許這是可能的。 – nicopablo 2011-02-27 22:39:44

+0

@nicopablo嗯..它使用您提供的問題上的代碼爲我工作〜它可能是一個編碼問題? – Shad 2011-02-27 22:45:02

+0

這很奇怪。我沒有我的清潔功能,所以我不能看到其他編碼方式不同。所以它肯定會改變你的兩個價值。樣式(「h:w」)和嵌入(「H」,「W」)? – nicopablo 2011-02-28 00:00:51

0

正如沙德認爲這的確是與魔術引號是一個問題。我只是在$ _POST數據上使用stripslahes。