preg_replace 单个变量中的多个 Youtube 链接

preg_replace multiple Youtube links in Single Variable

我还在学习 PHP 并且在今天之前从未接触过正则表达式或 preg_replace 所以请原谅我的无知。我正在为我的论坛修改一个脚本,以将帖子中的 YouTube link 转换为嵌入代码。到目前为止,如果字符串仅包含单个 link,它会起作用,但是当我在多个帖子中有多个 link 时,它不会。此外,我不确定 $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 .= ;
$replace .= '"></iframe>';

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

对于 $1,除非我缩短文本以删除所有其他 link,否则脚本不起作用。我需要能够替换所有 link,但我不知道如何访问正则表达式组,除了我一直关注的教程中的标准 $1、$2、$3 等。我正在尝试做的事情可行吗?

如果我更改此代码,您的代码对我有用

$replace .= ;

至此

$replace .= "$1";