Нужен PHP preg_replace для AMP Instagram, Twitter для вставки - PullRequest
0 голосов
/ 14 сентября 2018

Я работаю над пользовательским AMP для Wordpress и не хочу использовать какую-либо библиотеку по некоторым причинам.

Я хочу преобразовать обычный EMBED URL в AMP Url с помощью preg_replace, я сделал это для youtube иего работа отлично работает, вот пример.

/\s*[a-zA-Z\/\/:\.]*youtube.com\/watch\?v=([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i

с

<amp-youtube width="480" height="270" layout=responsive data-videoid="$1"></amp-youtube>

Теперь мне нужно конвертировать эти два

https://www.instagram.com/p/BmUm-8DH2Qq/?hl=en&taken-by=sonamkapoor

Нужноэтот идентификатор BmUm-8DH2Qq , поэтому я могу сделать код AMP следующим образом

<amp-instagram class="no-bottom" data-shortcode="BmUm-8DH2Qq<" width="1" height="1" layout="responsive"></amp-instagram>

https://twitter.com/ANI/status/1040050654172131328

и нужен этот идентификатор 1040050654172131328 длясделать код AMP

<amp-twitter class="no-bottom" width="390" height="330" layout="responsive" data-tweetid="1040050654172131328" data-cards="hidden"></amp-twitter>

спасибо

1 Ответ

0 голосов
/ 14 сентября 2018

Вместо использования регулярного выражения вы можете использовать parse_url с PHP_URL_PATH в качестве компонента, а затем использовать explode с косой чертой / в качестве разделителя.

Например:

$path = parse_url("https://www.instagram.com/p/BmUm-8DH2Qq/?hl=en&taken-by=sonamkapoor", PHP_URL_PATH);
$parts = explode('/', $path);
echo $parts[2]; // BmUm-8DH2Qq
echo '<amp-instagram class="no-bottom" data-shortcode="' . $parts[2] . '" width="1" height="1" layout="responsive"></amp-instagram>';

$path2 = parse_url("https://twitter.com/ANI/status/1040050654172131328", PHP_URL_PATH);
$parts2 = explode('/', $path2);
echo $parts2[3]; // 1040050654172131328
echo '<amp-twitter class="no-bottom" width="390" height="330" layout="responsive" data-tweetid="' . $parts2[3] . '" data-cards="hidden"></amp-twitter>';

Демо

...