使用 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.
轻松完成
我想使用 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.
轻松完成