Php 特定URL结构的preg_匹配

Php 特定URL结构的preg_匹配,php,regex,preg-match,Php,Regex,Preg Match,我试图获取URL的一部分来创建嵌入代码。我有以下URL结构: http://www.mtv.com/videos/foster-the-people/761507/houdini.jhtml#id=1518072&vid=761507 我需要使用preg\u match将URL分成几部分。理想情况下,我希望测试URL的结构,并从URL中获取数值。最后,我希望在preg\u匹配之后使用以下形式的数组: Array ( 0 => 761507 1 => 15180

我试图获取URL的一部分来创建嵌入代码。我有以下URL结构:

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

我需要使用
preg\u match
将URL分成几部分。理想情况下,我希望测试URL的结构,并从URL中获取数值。最后,我希望在
preg\u匹配之后使用以下形式的数组:

Array (
    0 => 761507
    1 => 1518072
    2 => 761507
)
请注意,“foster the people”和“houdini”是动态元素,可以包含字母、数字和“-”,并且会随着URL的不同而变化


谢谢你的帮助

试试这个:(更新)

演示:

<?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
)


代码:

<?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]
我建议您首先使用这些元素将URL分解为单独的组件,然后如果需要,使用preg\u match从
$urlarr['query]获取单独的子项
其中
$urlarr
是parse\u url的返回值。

谢谢您的帮助!这是一个很好的开始。我还需要匹配结构的其余部分。我需要通过查看结构的其余部分来确保这是MTV视频链接。@Sardine那么,你的意思是要确保它是以
http://www.mtv.com/videos/
?卡梅隆博士,你真是一位神奇的医生!谢谢你的帮助!工作起来很有魅力!一个快速跟进。如何匹配
&
&在vid之前?看这个:。通过使用
http:\/\/www.mtv\.com\/videos\/.*([0-9]+)\/.*id=([0-9]+)(&&;)vid=([0-9]+)
,您可以匹配
&
&。(在
vid=
之前,即…)谢谢您的建议!通常,我会这样做(主要是因为我缺乏正则表达式技能),但在这种情况下,我使用的API要求我指定正则表达式匹配。谢谢你的想法!