如何在 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|$)
用法:
$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 将其替换为您的嵌入代码。
我需要在带有 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|$)
用法:
$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 将其替换为您的嵌入代码。