【问题标题】:How to find a string and select it to the end (unknown) in php如何在php中找到一个字符串并选择它到最后(未知)
【发布时间】:2020-01-16 13:35:40
【问题描述】:

我需要使用 php 查找并选择文本中的所有 youtube 链接,以便用正确的嵌入代码替换它们,但我似乎找不到方法。

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

2- 结束的地方:
该链接可能有(或没有)附加的查询字符串,这使得它的长度未知,所以唯一的方法是在https://www.youtube.co....https://youtu.b... 和下一个空格之间选择,这将是链接的结尾。

我需要用正确的 youtube 嵌入代码替换链接。

知道如何选择链接吗?

【问题讨论】:

  • 到目前为止您尝试过什么?你被困在哪里了?这看起来像是正则表达式的简单任务
  • 我尝试了strpossubstr,但我认为这还不够。我不知道正则表达式,有没有一种方法或工具可以用来获得适合我需要的模式?

标签: php string substr strpos


【解决方案1】:

试试这个正则表达式

(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.'$0'.$embedEnd,$str);

echo $str;

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

【讨论】:

  • 嗨@Zuyas 非常感谢您的回答。作为字符串dsighksd siofh sdoifvh sdoivh sdipov sdiopvhj sdviphjsd viopj sdpiovj sdpvioj sdviphsiǘghjsd https://www.youtube.com/watch?v=Dx5qFachd3A ivpjsdfpvihjsdf pvijsdfvp wjfbaw ñhqwfu ghwqe fuigh wefuiagh https://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]
  • 试试我的新用法示例,这对你有用吗?如果是,请标记为答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多