Preg替换视频对象代码 - 仅适用于第一个实例

时间:2011-02-27 20:33:35

标签: object video embed preg-replace dimensions

任何人都可以帮我解释为什么以下代码仅适用于目标代码中的第一个宽度/高度实例。我需要替换使用“height:xxx; width:xxx”的样式,然后还替换实际的embed的height =“xxx”和width =“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'的替换部分有关,或者结果仅限于第一个实例。

非常感谢任何帮助。当正则表达式不是我的专长时,浪费了太多时间。 谢谢 尼古拉斯

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

正如Shad所说,这确实是魔术引号的问题。我只是在$ _POST数据上使用了striplahes。