1

我正在尝试解析 URL 中的两个数字。网址在这里:

http://movies.actionpaxed.com/5600_5949/5943/5/pics/none/500k/3min/003.jpg?nvb=20130811232301&nva=20130812012301&hash=090a687f7e27b2f5ef735

我试图只获取 URL 的“5943/5”部分。我只会解析 URL,然后使用 str_replace,但是我需要的两个文件夹的名称各不相同。

到目前为止,我有:

$homepage = file_get_contents($url);
$link = parse_to_string('"video_url":"', '"};', $homepage);
$link = str_replace(array( '"low":"', '"};'), '', $link);
$link = utf8_decode(urldecode($link));

在此代码的末尾,$link = http://movies.actionpaxed.com/5600_5949/5943/5/pics/none/500k/3min/003.jpg?nvb=20130811232301&nva=20130812012301&hash=090a687f7e27b2f5ef735

任何可以为我解决这个问题的正则表达式的帮助,将不胜感激!

4

4 回答 4

4

怎么样:

$res = explode('/', parse_url($url, PHP_URL_PATH));
$res = $res[2].'/'.$res[3];
echo $res;

演示!

于 2013-08-12T01:18:23.550 回答
1
$exploded = explode("/", $link);
$res = $exploded[4] . "/" . $exploded[5];

echo $res;
于 2013-08-12T00:50:20.667 回答
0
preg_match('%https?://.*?/\d*_\d*/(\d*)/(\d*)%',$link,$matches);
print_r($matches);
于 2013-08-12T01:01:01.477 回答
0

这是一个提取您要查找的内容的函数。

function getTheStuff($url) {

    // Only get the part of the URL that
    // actually matters; this makes the
    // problem smaller and easier to solve
    $path = parse_url($url, PHP_URL_PATH);

    // The path will be false if the URL is
    // malformed, or null if it was not found
    if ($path !== false && $path !== null) {

        // Assuming that the stuff you need is
        // always after the first forward slash,
        // and that the format never changes,
        // it should be easy to match
        preg_match('/^\/[\d_]+\/(\d+\/\d+)/', $path, $result);

        // We only capture one thing so what we
        // are looking for can only be the second
        // thing in the array
        if (isset($result[1])) {
            return $result[1];
        }
    }
    // If it is not in the array then it
    // means that it was not found
    return false;
}
$url = 'http://movies.actionpaxed.com/5600_5949/5943/5/pics/none/500k/3min/003.jpg?nvb=20130811232301&nva=20130812012301&hash=090a687f7e27b2f5ef735';
var_dump(getTheStuff($url));

如果我是为自己写这个,那么我会避免使用正则表达式。在这种情况下它是最简单的,所以我使用了它。我可能会通过标记$path/用作分隔符)来概括解决方案,然后让另一个函数/方法/机制处理提取所需的部分。这样一来,其他格式不同的 URL 会更容易采用它。

于 2013-08-12T02:32:20.303 回答