Php url的Preg_Match部分
我正在尝试匹配一个可以通过几种方式输入的url url是一个iTunes链接,我正试图从url中获取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
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');