preg_match用于特定URL结构

时间:2012-05-01 20:03:14

标签: php regex preg-match

我正在尝试抓取部分网址来创建嵌入代码。我有以下网址结构:

http://www.mtv.com/videos/foster-the-people/761507/houdini.jhtml#id=1518072&vid=761507

我需要使用preg_match将网址分成几部分。理想情况下,我想测试URL的结构并从URL获取数值。最后,我想在preg_match

之后使用以下形式的数组
Array (
    0 => 761507
    1 => 1518072
    2 => 761507
)

请注意,“foster-the-people”和“houdini”是动态元素,可以包含字母,数字和“ - ”,并且会从URL更改为URL。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

试试这个:(更新)

http:\/\/www\.mtv\.com\/videos\/.*?\/([0-9]+)\/.*?id=([0-9]+)&vid=([0-9]+)

演示:

http://regexr.com?30qo4


代码:

<?php
    $subject = "http://www.mtv.com/videos/foster-the-people/761507/houdini.jhtml#id=1518072&vid=761507";
    $pattern = '/http:\/\/www\.mtv\.com\/videos\/.*?\/([0-9]+)\/.*?id=([0-9]+)&vid=([0-9]+)/';
    preg_match($pattern, $subject, $matches);
    print_r($matches);

?>

输出

Array
(
    [0] => http://www.mtv.com/videos/foster-the-people/761507/houdini.jhtml#id=1518072&vid=761507
    [1] => 761507
    [2] => 1518072
    [3] => 761507
)

提示:您需要的元素是$matches[1]$matches[2]$matches[3]

答案 1 :(得分:0)

我建议您先使用parse_url将您的网址拆分为单个组件,然后根据需要使用preg_match从$urlarr['query']获取单个子项,其中$urlarr的返回值为parse_url。