从所选字符插入另一个字符串中的字符串直到选择字符php

时间:2013-11-23 19:48:53

标签: php

我有一个场景,我需要在每个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>

非常感谢。

3 个答案:

答案 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();