我正在尝试抓取部分网址来创建嵌入代码。我有以下网址结构:
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。
感谢您的帮助!
答案 0 :(得分:2)
试试这个:(更新)
http:\/\/www\.mtv\.com\/videos\/.*?\/([0-9]+)\/.*?id=([0-9]+)&vid=([0-9]+)
演示:
代码:
<?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。