我有一个场景,我需要在每个iframe的src属性后附加&wmode=transparent
。
我需要替换此代码:
<iframe width="560" height="315" src="//www.youtube.com/embed/UPk1B1bxUPg" frameborder="0" allowfullscreen></iframe>
到此(注意youtube url的结尾):
<iframe width="560" height="315" src="//www.youtube.com/embed/UPk1B1bxUPg/?wmode=transparent" frameborder="0" allowfullscreen></iframe>
非常感谢。
答案 0 :(得分:3)
您可以使用DOM解析器来完成此任务:
$str = <<<HTML
<iframe width="560" height="315" src="//www.youtube.com/embed/UPk1B1bxUPg" frameborder="0" allowfullscreen></iframe>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($str);
foreach($dom->getElementsByTagName('iframe') as $iframe) {
$src = $iframe->getAttribute('src');
$src .= '?wmode=transparent'; // use a regex for better results
$iframe->setAttribute('src', $src);
}
echo $dom->saveHTML();
答案 1 :(得分:1)
非常感谢您的投入。我自己找到了一些解决方案替换函数。
<?php
$videoEmbedCode = '<iframe width="560" height="315" src="//www.youtube.com/embed/UPk1B1bxUPg" frameborder="0" allowfullscreen></iframe>';
$appendString = '/?wmode=transparent';
/* Youtube video sticky menu overlap fix */
$searchStartLen = strpos($videoEmbedCode, 'youtube');
$searchEndLen = strpos($videoEmbedCode, '"', $searchStartLen);
$newVideoEmbedCode = substr_replace($videoEmbedCode, $appendString, $searchEndLen, 0);
print $newVideoEmbedCode;
?>
那就做到了!
答案 2 :(得分:-1)
您可以使用dom解析器轻松完成工作。我将使用本机php dom解析器:http://php.net/manual/en/class.domdocument.php
所以php代码看起来像
$doc = new DOMDocument();
$doc->loadHTML($your_html);
foreach($doc->getElementsByTagName('iframe') as $iframe)
{
$iframe->setAttribute("src",$iframe->getAttribute('src').'?wmode=transparent');
}
echo $doc->saveHTML();