Frage

Ich versuche, eine einfache Aufgabe zu tun, von Tausenden von Musik-Video einbetten Codes mit einem gemeinsamen mit / Höhe zu verändern.

Zum Beispiel habe ich den folgenden Code:

<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>

Zeilenumbrüche hinzugefügt nur für Lesbarkeit

Ich brauche die Breite / Höhe Parameter in beiden <object> und <embed> Tags zu bearbeiten, man eine ‚px‘ Suffix, und die andere, die nicht überhaupt eine (was völlig zufällig ist, haben einige Codes es in allen Fällen, andere nicht).

Zum einen, ich versuche, die Breite / Höhe des vorhandenen Video, um herauszufinden, .... das Seitenverhältnis zu finden ... und dann mit den neuen Werten (width = „640“ und die Höhe der vorhandenen Werte ersetzen = „xxx“, die auf dem Seitenverhältnis des Videos basiert).

War es hilfreich?

Lösung

Hier ist, wie die Breite zu erhalten und Höhe

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

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

Berechnen Sie die neue Höhe wie folgt aus:

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

Und ersetzen etwa so:

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

Andere Tipps

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

Mit 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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top