2013-11-23 154 views
0

我有一個場景,在每個iframe的src屬性之後需要追加&wmode=transparent將字符串插入到所選字符的另一個字符串中直到選中字符php

我需要更換驗證碼:

<iframe width="560" height="315" src="//www.youtube.com/embed/UPk1B1bxUPg" frameborder="0" allowfullscreen></iframe> 

這個(通知YouTube網址的結尾):

<iframe width="560" height="315" src="//www.youtube.com/embed/UPk1B1bxUPg/?wmode=transparent" frameborder="0" allowfullscreen></iframe> 

非常感謝。

回答

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(); 
+0

這也看起來很不錯的代碼。我將來肯定會使用它。 –

+0

謝謝我遵循了您的建議並使用了此代碼。 –

-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(); 
+0

這也是一個不錯的方法。我自己找到了另一個解決方案,並在下面添加了一條評論謝謝。 –

+0

不客氣。我強烈建議你在使用html時使用解析器。 – DriverBoy

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

這樣做!

相關問題