如何在php中查找字符串并将其选择到底(未知)
我需要用php查找并选择文本中的所有youtube链接,以便用适当的嵌入代码替换它们,但我似乎找不到方法 1-链接的起始位置:如何在php中查找字符串并将其选择到底(未知),php,string,substr,strpos,Php,String,Substr,Strpos,我需要用php查找并选择文本中的所有youtube链接,以便用适当的嵌入代码替换它们,但我似乎找不到方法 1-链接的起始位置: 链接的开始可能在https://www.youtube.com/watch?v=和https://youtu.be/我认为strpos()可以完成这项工作,问题是 2-结束位置: 链接可能有(或没有)一个查询字符串,这使得它的长度未知,所以唯一的方法是在https://www.youtube.co....或https://youtu.b...和下一个空白,即链接的结尾
链接的开始可能在
https://www.youtube.com/watch?v=
和https://youtu.be/
我认为strpos()
可以完成这项工作,问题是
2-结束位置:链接可能有(或没有)一个查询字符串,这使得它的长度未知,所以唯一的方法是在
https://www.youtube.co....
或https://youtu.b...
和下一个空白,即链接的结尾
我需要用正确的youtube嵌入代码替换链接
知道如何选择链接吗?试试这个正则表达式
(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.'$0'.$embedEnd,$str);
echo $str;
$re='/(https:\/\/www.youtube\.com\/.?(:\s\$)(https:\/\/youtu\.be\/.?(:\s\$)/);
$str='abchttps://www.youtube.com/watch?v=Dx5qFachd3A defhttps://youtu.be/Dx5qFachd3A ghi';
$embedStart='';
预匹配全部($re,$str,$matches,预设置顺序,0);
$str=preg_replace($re,$embedStart.$0'.$embedEnd,$str);
echo$str;
您可以用嵌入代码替换它。到目前为止您尝试了什么?你被困在哪里?对于常规表达式来说,这似乎是一项简单的任务。我尝试了使用
substr
的strpos
,但我认为这还不够。我不知道正则表达式,有没有一种方法或工具可以让我得到一个适合我需要的模式?嗨@Zuyas非常感谢你的回答。作为字符串dsighksd siofh sdoifvh sdipov sdiopvhj sdviphjsd viopj sdpiovj sdpvioj sdviphsiǘghjsdhttps://www.youtube.com/watch?v=Dx5qFachd3A ivpjsdfpvihjsdf PVIJSDF pvijsdfvp wjfbawñhqwfu ghwqehttps://youtu.be/Dx5qFachd3A fuio cfhiouacfh weoauicfh
输出为:[["https://www.youtube.com/watch?v=Dx5qFachd3A ", "https://www.youtube.com/watch?v=Dx5qFachd3A", ], [ "https://youtu.be/Dx5qFachd3A ", "", "https://youtu.be/Dx5qFachd3A“,]”,]
是否可以实现[match1,match2]
试试我的新用法示例,这对您有用吗?如果是,请标记为答案