【问题标题】:Find string which changes it position in URL [duplicate]查找在 URL 中更改其位置的字符串 [重复]
【发布时间】:2018-06-11 23:21:28
【问题描述】:

我有一个有时会改变位置的 URL

我的网址看起来像

https://video.twimg.com/ext_tw_video/841791481534803968/pu/vid/320x180/egCAExYQdRBw08fb.mp4
https://video.twimg.com/ext_tw_video/841791481534803968/pu/vid/1280x720/GVsCGddpL9QoO4_B.mp4
https://video.twimg.com/ext_tw_video/841791481534803968/pu/vid/640x360/33qcUEzFw-WS0inJ.mp4

在这些 url 中我需要提取 "320x180" 、 "1280x720" 、 "640x360" 还有更多,不胜枚举。

加上链接的变化,有时 url 中没有 /pu/vid/ 部分。我尝试使用 Php 爆炸功能,但随着位置的变化。很难找到它们。 例如

https://video.twimg.com/ext_tw_video/640x360/pu/vid/841791481534803968/33qcUEzFw-WS0inJ.mp4

对于我使用此代码的常量部分

$breaker=(explode("/",$video->url));
$quality = $breaker[6];

但是因为他们换了地方,他们的价值观也不同。有什么不同的方法吗? 此外,如果值保持不变,那么我如何提取视频质量的 URL

如果脚本发现质量是 1280x720,那么它会给我 url。并且会循环遍历它们以找到不同的静态视频质量?

https://video.twimg.com/ext_tw_video/841791481534803968/pu/vid/1280x720/GVsCGddpL9QoO4_B.mp4

【问题讨论】:

  • 正则表达式为3-4位'x' 3-4位?
  • 试试(?<=\/)\d{3,4}x\d{3,4}(?=\/)。见Demo

标签: php regex


【解决方案1】:

您应该只能在正则表达式 \d+x\d+ 上使用 preg_match()preg_match_all(),这与前面和后面的任何 x 匹配位数。

preg_match("/\d+x\d+/", $input_line, $output_array);
preg_match_all("/\d+x\d+/", $input_lines, $output_array);

这可以在 Regex101 herePHPLiveRegex here 上看到。

您可以更具体一点并使用(?<=\/)\d{1,4}x\d{1,4}(?=\/),它确保每组中有1到4个数字,并且目标字符串由两个/括起来,尽管这可能是不必要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2014-02-04
    • 1970-01-01
    相关资源
    最近更新 更多