我的网站在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源的嵌入项存在时完全替换为
。答案 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,但不是正则表达式专家。