Preg_Match 部分 url

Preg_Match section of url

我正在尝试匹配可以通过几种方式输入的 url。

url 是一个 iTunes link,我正在尝试从 url.

中获取 id

我想知道是否可以使用表达式去除 id######### 以外的所有内容,然后使用 str_replace 删除 ID。

我从这里开始:http://www.phpliveregex.com/p/dWp但我不是表达式方面的专家。

上面url的重点是,如果已经从iTunes中剥离出来url和id,有没有办法存储到数组中?

或者有没有办法说:

if( THE STRING IS NOT EMPTY ) {
    if( THERE ARE MATCHES IN THE PREG_MATCH ) { $VAR = $MATCHES; }
    if( THERE ARE NO MATCHES IN THE PREG_MATCH ) { $VAR = $ORIGINAL_STRING; }
}

如果您提供一个 URL 示例会很有帮助,但是...听起来您想做这样的事情:

$subject = 'http://foo.bar/baz/id1234567890/yah';
$pattern = '/id(\d+)/';
preg_match($pattern, $subject, $matches);

如果在这种情况下使用print_r显示数组:

print_r($matches);

它会显示:

Array
(
    [0] => id1234567890
    [1] => 1234567890
)

您不需要使用正则表达式,因为有一个 PHP 函数来解析 URL (parse_url),并且您已经知道 [=] 的最后一个目录中有一个 id 18=](换句话说,你不需要检查格式):​​

$path = parse_url($url, PHP_URL_PATH);
$lastdir = array_pop(explode('/', $path));
$result = ltrim($lastdir, 'id');

demo