PHP - html DOM解析 - 在<video>标记之间添加html内容

时间:2017-04-12 13:58:39

标签: php html html5 parsing dom

我想将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;

?>

有什么想法吗?

安德烈亚斯

0 个答案:

没有答案