0

私は、共通のwith/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" and height = "xxx")に置き換えます。これは、ビデオのアスペクト比に基づいています)。

4

3 に答える 3

4

幅と高さを取得する方法は次のとおりです

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);
于 2009-09-28T00:40:19.740 に答える
2
$embed_clean = preg_replace('/width=([^"]"\d+(%|px|)[^"]")/','width="'.$CONFIG.'"',$embed_clean);
于 2011-11-26T23:03:29.117 に答える
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();
于 2009-09-28T03:36:07.453 に答える