PHP从URL字符串获取参数(不是当前页面)

时间:2011-11-28 15:11:02

标签: php regex url-parameters

我知道您可以从当前所在页面轻松获取参数,但是您可以轻松地从任何URL字符串中执行相同操作吗?

我需要从像https://market.android.com/details?id=com.zeptolab.ctr.paid?t=W251bGwsMSwxLDIxMiwiY29tLnplcHRvbGFiLmN0ci5wYWlkIl0这样的字符串中获取“id”参数。

如何使用PHP执行此操作?是否有内置函数,还是我必须使用正则表达式?

4 个答案:

答案 0 :(得分:4)

您可以使用parse_urlparse_str的组合:

$url = 'https://market.android.com/details?id=com.zeptolab.ctr.paid?t=W251bGwsMSwxLDIxMiwiY29tLnplcHRvbGFiLmN0ci5wYWlkIl0';
$arr = parse_url($url);
parse_str($arr['query']);
echo $id; //com.zeptolab.ctr.paid?t=W251bGwsMSwxLDIxMiwiY29tLnplcHRvbGFiLmN0ci5wYWlkIl0

答案 1 :(得分:2)

是的,你可以。

parse_url()

来自PHP文档:

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>

以上示例将输出:

Array
(
    [scheme] => http
    [host] => hostname
        [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)

/path

答案 2 :(得分:2)

parse_url()

function extractGETParams($url)
{
  $query_str = parse_url($url, PHP_URL_QUERY);
  $parts = explode('&', $query_str);
  $return = array();

  foreach ( $parts as $part )
  {
    $param = explode('=', $part);
    $return[$param[0]] = $param[1];
  }

  return $return;
}

$url = 'http://username:password@hostname/path?arg=value&arg2=value2#anchor';

var_dump( extractGETParams($url) );

在Codepad.org上:http://codepad.org/mHXnOYlc

答案 3 :(得分:0)

您可以使用parse_str(),然后访问变量$ id。