Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php url的Preg_Match部分_Php_Regex_Preg Replace_Preg Match - Fatal编程技术网

Php url的Preg_Match部分

Php url的Preg_Match部分,php,regex,preg-replace,preg-match,Php,Regex,Preg Replace,Preg Match,我正在尝试匹配一个可以通过几种方式输入的url url是一个iTunes链接,我正试图从url中获取id 我想知道有没有可能让一个表达式除去id之外的所有内容,然后使用str\u replace删除id 我从这里开始:但我在表达方面不是专家 以上url的要点是,如果它已经从iTunes url和id中剥离,是否有方法将其存储在阵列中 或者有没有办法说: if( THE STRING IS NOT EMPTY ) { if( THERE ARE MATCHES IN THE PREG_MA

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

url是一个iTunes链接,我正试图从url中获取
id

我想知道有没有可能让一个表达式除去id之外的所有内容,然后使用
str\u replace
删除id

我从这里开始:但我在表达方面不是专家

以上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($matches);
这将表明:

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

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


天哪,我真是个白痴!我完全忘记了
parse\u url
$path = parse_url($url, PHP_URL_PATH);
$lastdir = array_pop(explode('/', $path));
$result = ltrim($lastdir, 'id');