如何在 php 中找到字符串并 select 到结尾(未知)

How to find a string and select it to the end (unknown) in php

我需要在带有 php 的文本中找到并 select 所有 youtube link,以便用正确的嵌入代码替换它们,但我似乎没有找到路。

1- link 开始的地方:
link 的开始可能会在 https://www.youtube.com/watch?v=<video_id>https://youtu.be/<video_id> 之间改变,我认为 strpos() 可以完成这项工作,问题是......

2- 结束的地方:
link 可能附加(或不附加)一个查询字符串,这使得它的长度未知,所以唯一的方法是 select 在 https://www.youtube.co....https://youtu.b... 和下一个白色 space 这将是 link 的结尾。

我需要用正确的 YouTube 嵌入代码替换 link。

知道如何 select link 吗?

试试这个正则表达式

(https:\/\/www\.youtube\.com\/.*?)(?:\s|$)|(https:\/\/youtu\.be\/.*?)(?:\s|$)

example

用法:

$re = '/(https:\/\/www\.youtube\.com\/.*?)(?:\s|$)|(https:\/\/youtu\.be\/.*?)(?:\s|$)/';
$str = 'abc https://www.youtube.com/watch?v=Dx5qFachd3A def https://youtu.be/Dx5qFachd3A ghi';
$embedStart = '<iframe width="560" height="315" src="';
$embedEnd = '" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

$str = preg_replace($re,$embedStart.'[=11=]'.$embedEnd,$str);

echo $str;

您可以使用 preg_replace 将其替换为您的嵌入代码。