需要帮助在php中使用简单的preg_match / preg_replace regex

时间:2009-09-28 00:29:36

标签: php regex preg-replace preg-match

我正在尝试用一个常见的/ height来改变成千上万的音乐视频嵌入代码。

例如,我有以下代码:

<object width="480px" height="407px" >
    <param name="allowFullScreen" value="true"/>
    <param name="wmode" value="transparent"/>
    <param name="movie" value="http://mediaservices.myspace.com/services/media/embed.aspx/m=1311720,t=1,mt=video"/>
    <embed src="http://mediaservices.myspace.com/services/media/embed.aspx/m=1311720,t=1,mt=video"
        width="480" height="407" allowFullScreen="true"
        type="application/x-shockwave-flash"
        wmode="transparent">
    </embed>
</object>

仅为易读性添加换行符

我需要编辑<object><embed>标签中的宽度/高度参数,其中一个带有'px'后缀,另一个带根本没有一个(这是完全随机的,有些代码在所有情况下都有,有些代码没有。

首先,我试图找出现有视频的宽度/高度....找到宽高比...然后用新值替换现有值(width =“640”和height = “xxx”,它基于视频的宽高比。)

3 个答案:

答案 0 :(得分:3)

以下是如何获得宽度和高度

preg_match('/width="(\d+)(px)?" height="(\d+)(px)?"/', $text, $matches);

$width = intval($matches[1]);
$height = intval($matches[3]);

像这样计算新的高度:

$new_width = 640;
$new_height = intval($new_width * $height / $width);

并像这样替换:

$text = preg_replace('/width="(\d+)(px)?" height="(\d+)(px)?"/',
                     'width="' . $new_width . '" height="' . $new_height . '"',
                      $text);

答案 1 :(得分:2)

$embed_clean = preg_replace('/width=([^"]"\d+(%|px|)[^"]")/','width="'.$CONFIG.'"',$embed_clean);

答案 2 :(得分:1)

使用SimpleHTMLDOM

require_once("simplehtmldom.php");

$dom = str_get_html($text);
foreach ($dom->find('object') as $obj) {
    $width = intval($obj->width);
    $height = intval($obj->height);
    $height = intval(640 * $height / $width);
    $obj->width = 640;
    $obj->height = $height;
    $embed = $obj->find('embed',0);
    if ($embed != null) {
        $embed->width = 640;
        $embed->height = $height;
    }
}
$text = $dom->save();