我想将html <video>
转换为放大器<amp-video>
,我的问题是使用浏览器时后备文本(如果HTML5不受支持)。
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
您可以在此处看到后备文字&#34;您的浏览器不支持视频代码。&#34;。在AMP上它看起来像:
<amp-video width=320 height=240 src="https://yourhost.com/videos/movie.mp4"
poster="movie-poster.jpg">
<source type="video/mp4" src="movie.mp4">
<source type="video/ogg" src="movie.ogg">
<div fallback><p>
Your browser doesn’t support HTML5 video
</p></div>
</amp-video>
您会看到,后备文字被<div fallback><p>
和</p></div>
包围。
目标是添加此周边标记。
到目前为止我的代码是:
<?php
$html = '<video width="320" height="240" controls><source src="movie.mp4" type="video/mp4"><source src="movie.ogg" type="video/ogg">Your browser does not support the video tag.</video>';
$dom = new DOMDocument;
$dom->loadHTML($html);
$checks = $dom->getElementsByTagName('video');
if ($checks != '') {
foreach ($checks as $check) {
echo $check->textContent;
}
}
?>
如您所见,我可以回复后备文本,但我不知道如何添加周围的标签。 preg_replace
是不可能的......
提前致谢。
安德烈亚斯
P.S。:抱歉英语不好,没有母语;-)
一些进步; - )
使用第二个DOM我将视频标记提取为字符串并尝试使用str_replace进行修改。当字符串被修改时,我想&#34;将它写回$ check ...
带有$ fallbacktext的str_replace没有工作(可能是解码问题?)我现在的代码是:
<?php
$html = '<video width="320" height="240" controls><source src="movie.mp4" type="video/mp4"><source src="movie.ogg" type="video/ogg">Your browser does not support the video tag.</video>';
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
$checks = $dom->getElementsByTagName('video');
if ($checks != '') {
foreach ($checks as $check) {
$newdoc = new DOMDocument();
$cloned = $check->cloneNode(TRUE);
$newdoc->appendChild($newdoc->importNode($cloned,TRUE));
$fallback = $newdoc->saveHTML();
$fallbacktext = strip_tags($fallback);
echo $fallbacktext;
echo $fallback;
//$fallbacktext = "Your browser does not support the video tag.";
echo str_replace($fallbacktext,'hello',$fallback);
}
}
$html = $dom->saveHTML();
//echo $html;
?>
有什么想法吗?
安德烈亚斯