preg_replace несколько ссылок на Youtube в одной переменной

Я все еще изучаю PHP и никогда не касался regex или preg_replace до сегодняшнего дня, поэтому, пожалуйста, прости мое невежество. Я модифицирую скрипт для моих форумов, чтобы конвертировать ссылки YouTube в сообщениях для встраивания кода. До сих пор, если строка содержит только одну ссылку, она работает, но когда у меня несколько ссылок в нескольких сообщениях, это не так. Кроме того, я не уверен, как заполняется переменная $ text, потому что она не просто строка и содержит все статусные сообщения для пользователя в одной переменной, которая передается другим функциям. Любая помощь очень ценится.

Это выглядит как одна строка:

echo "$text";
https://www.youtube.com/watch?v=3rb47k3KHtQtesttesthttps://www.youtube.com/watch?v=ah2rSAdZljMhttps://www.youtube.com/watch?v=ah2rSAdZljM

Но на самом деле это несколько строк в одной переменной. Это меня смущает, так как я не знаю, как это сделать без массивов, и я бы очень хотел знать.

var_dump($text);
string(43) "https://www.youtube.com/watch?v=3rb47k3KHtQ" string(4) "test" string(4) "test" string(43) "https://www.youtube.com/watch?v=ah2rSAdZljM" string(43) "https://www.youtube.com/watch?v=ah2rSAdZljM"

PHP-код:

<?php
$search = '/(https:\/\/www\.youtube\.com\/watch.v=[a-z0-9]{8,11})/i';

$replace = '<iframe width="560" height="315" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen src="https://www.youtube.com/embed/';
$replace .= $1;
$replace .= '"></iframe>';

echo preg_replace($search, $replace, $text);
?>

С $ 1 скрипт не будет работать, если я не укоротю текст, чтобы удалить все остальные ссылки. Мне нужно иметь возможность заменить все ссылки, но я не знаю, как получить доступ к группам регулярных выражений, за исключением стандартных $ 1, $ 2, $ 3 и т. Д. Из учебных пособий, за которыми я следовал. Возможно ли то, что я пытаюсь сделать?

0

Решение

Ваш код работает для меня, если я изменю это

$replace .= $1;

к этому

$replace .= "\$1";
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]