php preg_match找到网址

时间:2013-05-18 10:02:44

标签: php url split preg-match

我可以获得整页来源。它类似于:

&url240=http://cs518313v4.vk.me/u187298368/videos/c733ac6e5c.240.mp4&url360=http://cs518313v4.vk.me/u187298368/videos/c733ac6e5c.360.mp4&jpg=http://cs518313v4.vk.me/u187298368/video/l_292f9ac5.jpg&

我如何只获取网址链接http://cs518313v4.vk.me/u187298368/videos/c733ac6e5c.240.mp4和网址链接http://cs518313v4.vk.me/u187298368/videos/c733ac6e5c.360.mp4

3 个答案:

答案 0 :(得分:3)

一种可能的方法是使用parse_str函数来解析字符串:

$arr = [];
parse_str($url, $arr);
echo $arr['url240'];
echo $arr['url360'];

重点是,PHP开发人员已经解决了这个任务,并且测试了解决方案IS。没有理由发明自己的解决方案。

答案 1 :(得分:1)

使用preg_match:

$string = '&url240=http://cs518313v4.vk.me/u187298368/videos/c733ac6e5c.240.mp4&url360=http://cs518313v4.vk.me/u187298368/videos/c733ac6e5c.360.mp4&jpg=http://cs518313v4.vk.me/u187298368/video/l_292f9ac5.jpg&';
preg_match("/&url240=(.*?)&/", $string, $A);
preg_match("/&url360=(.*?)&/", $string, $B);

$urla = $A[1]; // url 240
$urlb = $B[1]; // url 360

不确定这是最好的方式,但它确实有效。

答案 2 :(得分:0)

如果这是您的使用案例,请尝试:

$search="url240";
preg_match("/$search=([^&]*)&/",$page,$matches);
$url240=$matches[1];

但这是期待的

  1. 每个网址末尾的&符号
  2. 没有包含查询参数的单个网址,例如“?p1 = v1& p2 = v2”。
  3. 从您的来源看,网址似乎是由&符号分隔的,就像它们是URL查询参数一样。也许类似于(& | \ s)来捕获最后一个不会被&符号跟随的URL。这一切都取决于您期望的数据。