使用 preg_replace 更改 youtube 链接

Using preg_replace to alter youtube links

我想使用 preg_replace 更改标准的 YouTube 视频链接(如:https://www.youtube.com/watch?v=zVzhpkFBFP8) stored in my database to embeded urls (like: https://www.youtube.com/embed/zVzhpkFBFP8)。到目前为止,这是我的代码:

<?php
    $Link = getuser($my_id, 'YoutubeLink'); 
    $LinkNew = preg_replace("/watch?v=*/","embed*/","$Link");
    echo "$LinkNew" ?>

但它不起作用。我可能在做一些愚蠢的事情,但我是 php 的新手,所以非常感谢您的帮助。

对于没有模式的东西,不需要使用preg_replace。由于 watch?v= 始终相同,因此请使用 str_replace('watch?v=', 'embed/', $Link);

您的正则表达式无法正常工作,因为 ? 是正则表达式中的一个特殊字符,因此您需要将其转义。问号使前面的字符可选。要转义,只需在 \?.

前添加一个反斜杠

* 的使用也有些不正确。星号是一个量词,所以你说的是零个或多个等号。如果你想要等号后的所有内容,你会做 .*。那会得到所有其他字符,因为 . 是任何字符,与 * 配对就是一切。您实际上也不想这样做,因为您没有对其进行分组,而替换只会删除它。如果您要分组,您可以稍后在使用 </code> 的替换中使用该值。这是一篇关于 <a href="http://www.regular-expressions.info/brackets.html" rel="nofollow">http://www.regular-expressions.info/brackets.html</a>.</p> 的文章 <pre><code><?php $Link = getuser($my_id, 'YoutubeLink'); $LinkNew = preg_replace("/watch\?v=/","embed/", $Link); echo "$LinkNew"; ?>

正如@V13Axel 所指出的,尽管这可以使用 str_replace.

轻松完成