preg_replace单变量

时间:2018-01-13 06:54:52

标签: php youtube preg-replace regex-group

我还在学习PHP并且在今天之前从未接触过正则表达式或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等,我已经关注的教程。我试图做的是什么?

1 个答案:

答案 0 :(得分:0)

如果我改变了这个

,你的代码对我有用
$replace .= $1;

到这个

$replace .= "\$1";