PHPでシンプルするpreg_match /にpreg_replace正規表現との助けが必要
-
18-09-2019 - |
質問
私は/高さ共通で音楽ビデオの埋め込みコードの数千人を変更する簡単なタスクを実行しようとしています。
たとえば、私は次のコードを持っています:
<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();
所属していません StackOverflow