質問

私は/高さ共通で音楽ビデオの埋め込みコードの数千人を変更する簡単なタスクを実行しようとしています。

たとえば、私は次のコードを持っています:

<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」接尾辞を有するもので、幅/高さのパラメータを編集する必要があり、他は完全にランダムである(すべて1つを持っていない、いくつかのコードがすべてのケースでそれを持って、他の人は)ありません。

まず、私は、アスペクト比を見つける....既存のビデオの幅/高さを見つけるためにしようと...そして新しい値(幅=「640」高さ=で既存の値を置き換えていますビデオのアスペクト比に基づいて、「XXX」)。

役に立ちましたか?

解決

ここでは、幅と高さ

を取得する方法です
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);

他のヒント

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

使用 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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top