Восстановление встраивания YouTube с использованием правильного синтаксиса в формате AMP - PullRequest
0 голосов
/ 24 сентября 2018

Мой сайт выводит все видео на YouTube для вставки в виде amp-iframe в виде AMP.Они играют очень хорошо, однако, я узнал из 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 голосов
/ 03 октября 2018

Имея ту же проблему здесь, под AMP для WP.Добавляем ваш код, возвращаем содержимое дважды, один раз с разметкой 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, но я не эксперт по регулярным выражениям.

...