Php 特定URL结构的preg_匹配
我试图获取URL的一部分来创建嵌入代码。我有以下URL结构: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
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要求我指定正则表达式匹配。谢谢你的想法!