使用AMP格式的正确语法重新生成YouTube嵌入内容

时间:2018-09-24 12:25:01

标签: php amp-html

我的网站在AMP视图中将所有youtube嵌入视频输出为amp-iframe。 它们的运行情况还不错,但是,我从Google Search Console中注意到它们的正确语法(要求一种)。

现在,我已经继续并添加了以下代码:

$ampyoutubevideo = str_replace("https://www.youtube.com/embed/","",$base_content);
$html = preg_replace('/<amp-iframe\s+.*?\s+src=("youtube.com*?").*?<\/amp-iframe>/', '<amp-youtube
    data-videoid=$1
    layout="responsive"
    width="480" height="270"></amp-youtube>', $ampyoutubevideo);

echo $html;

效果很好,但是自从生成视频以来,我的视频被两次播放,但代码也存在。 我确实认为我的正则表达式不正确,我想知道您是否可以帮助我正确地使用语法。

我的目的是在仅来自youtube.com源的嵌入项存在时完全替换为

1 个答案:

答案 0 :(得分:0)

在AMP的AMP下,这里有同样的问题。 添加代码,两次返回内容,一次使用amp-youtube标记,一次使用amp-iframe。

我要添加:

$ampyoutubevideo = str_replace("https://www.youtube.com/embed/","",$base_content);
$html = preg_replace('/<amp-iframe\s+.*?\s+src=(".*?").*?<\/amp-iframe>/', '<amp-youtube
    data-videoid=$1
    layout="responsive"
    width="480" height="270"></amp-youtube>', $ampyoutubevideo);

echo $html;

并获得:

<div class="embed-responsive embed-responsive-16by9">
<amp-youtube data-videoid="zXrdyx43va" layout="responsive" width="480" height="270"></amp-youtube>
</div>
<div class="embed-responsive embed-responsive-16by9">
<amp-iframe class="embed-responsive-item amp-wp-enforced-sizes" src="https://www.youtube.com/embed/zXrdyx43va" width="300" height="150" frameborder="0" allowfullscreen="" sandbox="allow-scripts allow-same-origin" layout="intrinsic"><div placeholder="" class="amp-wp-iframe-placeholder">
</div>
</amp-iframe>

如果我不应用您的代码段,则会得到以下输出:

<div class="embed-responsive embed-responsive-16by9">
<amp-iframe class="embed-responsive-item amp-wp-enforced-sizes" src="https://www.youtube.com/embed/zXrdyx43va" width="300" height="150" frameborder="0" allowfullscreen="" sandbox="allow-scripts allow-same-origin" layout="intrinsic"><div placeholder="" class="amp-wp-iframe-placeholder">
</div>
</amp-iframe>

我非常确定您需要手动preg_replace iframe,但不是正则表达式专家。