使用preg_replace更改youtube链接

时间:2015-05-11 02:39:41

标签: php preg-replace

我想使用preg_replace将存储在我的数据库中的标准YouTube视频链接(例如:https://www.youtube.com/watch?v=zVzhpkFBFP8)更改为嵌入的网址(例如:https://www.youtube.com/embed/zVzhpkFBFP8)。到目前为止,这是我的代码:

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

但它不起作用。我可能做了一些愚蠢的事情,但我是php的新手,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

你的正则表达式不起作用,因为?是正则表达式中的特殊字符,所以你需要转义它。问号使前面的字符可选。要转义,只需在\?之前添加反斜杠。

*也被错误地使用了。星号是一个量词,所以你要说零或多个等号。如果你想在等号之后的所有内容,那么你需要.*。这将获得所有其他角色,因为.是任何角色,与*配对就是一切。你实际上并不想这样做,因为你没有对它进行分组,而替换只是删除它。如果您要进行分组,则可以使用$1在替换中使用该值。这是http://www.regular-expressions.info/brackets.html的写作。

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

正如@ V13Axel指出的那样,虽然使用str_replace可以很容易地做到这一点。