【问题标题】:Using preg_replace to alter youtube links使用 preg_replace 更改 youtube 链接
【发布时间】:2015-05-11 02:39:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: php preg-replace


    【解决方案1】:

    没有必要使用preg_replace 来处理没有模式的事情。因为watch?v=总是一样的,所以改用str_replace('watch?v=', 'embed/', $Link);

    【讨论】:

      【解决方案2】:

      您的正则表达式无法正常工作,因为? 是正则表达式中的特殊字符,因此您需要对其进行转义。问号使前面的字符可选。要转义,只需在 \? 之前添加一个反斜杠。

      * 的使用也有些不正确。星号是一个量词,所以你说的是零个或多个等号。如果你想要等号之后的所有内容,你会做.*。这将得到所有其他字符,因为. 是任何字符并且与* 配对就是一切。您实际上也不想这样做,因为您没有对其进行分组,并且替换只会将其删除。如果您要对它进行分组,您可以稍后在使用 $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 轻松完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-11
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 2014-02-15
        相关资源
        最近更新 更多