【发布时间】:2019-04-25 14:57:21
【问题描述】:
我正在尝试找到一个表达式,以仅保留我在 $render 变量中找到的第一个 youtube 链接。
$render="some text here https://www.youtube.com/watch?v=fJ9rUzIMcZQ https://www.youtube.com/watch?v=fJ9rUzIMcZQ some text here https://www.youtube.com/watch?v=fJ9rUzIMcZQhttps://www.youtube.com/watch?v=fJ9rUzIMcZQ";
$prefix = "https://www.youtube.com/watch?v=";
$index = strpos($render, $prefix) + strlen($prefix);
$youtube = substr($render, $index);
$youtube = strtok($youtube,' ');
$regex="@(https):\/\/(www\.)?youtube.com/watch\?v=[\w_-].* *@";
preg_match($string, $render, $matches, PREG_OFFSET_CAPTURE);
$render = preg_replace($regex, "", $render);
$render = substr_replace($render, $matches[0][0], $matches[0][1], 0);
echo $render;
我得到了什么
https://www.youtube.com/watch?v=fJ9rUzIMcZQ ://www.youtube.com/watch?v=fJ9rUzIMcZQ
我想得到什么
https://www.youtube.com/watch?v=fJ9rUzIMcZQ
附: 最后两个链接合并
【问题讨论】:
-
$render是不是一个由链接填充的字符串,每个链接之间用空格隔开? -
是的。除了最后两个之外,它们用空格分隔。它们结合在一起。
-
如果你只想要第一个链接,为什么不简单地将
explode()放入一个数组中,获取第一个元素,并确认它是一个 youtube URL 呢?如果没有,请抓住下一个并重复。 -
很抱歉没有正确描述我想要的东西。有可能包含和除链接之外的其他词。比如:$render="这里有一些文字youtube.com/watch?v=fJ9rUzIMcZQyoutube.com/watch?v=fJ9rUzIMcZQ这里有一些文字youtube.com/watch?v=fJ9rUzIMcZQhttps://www.youtube.com/…";
标签: php regex hyperlink youtube