音娱家 發表於 2019-10-25 10:59:00

php解析url几种方式

<h3 id="php解析url几种方式">php解析url几种方式</h3>
<ol>
<li>利用$_SERVER内置数组变量</li>
</ol>
<pre><code>访问:
http://localhost/test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1

//URL的参数
echo $_SERVER['QUERY_STRING'];
返回:
m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1

//包含文件名
echo $_SERVER["REQUEST_URI"];
返回:
/test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1
</code></pre>
<ol start="2">
<li>利用pathinfo内置函数</li>
</ol>
<pre><code>echo "&lt;pre&gt;";
$url = 'http://localhost/test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1#top';
var_export(pathinfo($url));

返回:
array (
'dirname' =&gt; 'http://localhost',
'basename' =&gt; 'test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1#top',
'extension' =&gt; 'php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1#top',
'filename' =&gt; 'test',
)
</code></pre>
<ol start="3">
<li>利用parse_url内置函数</li>
</ol>
<pre><code>echo "&lt;pre&gt;";
$url = 'http://localhost/test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1#top';
var_export(parse_url($url));

返回:
array (
'scheme' =&gt; 'http',
'host' =&gt; 'localhost',
'path' =&gt; '/test.php',
'query' =&gt; 'm=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1',
'fragment' =&gt; 'top',
)
</code></pre>
<ol start="4">
<li>利用basename内置函数</li>
</ol>
<pre><code>echo "&lt;pre&gt;";
$url = 'http://localhost/test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1#top';
var_export(basename($url));

返回:
test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1#top
</code></pre>
<ol start="5">
<li>正则匹配</li>
</ol>
<pre><code>echo "&lt;pre&gt;";
$url = 'http://localhost/test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1#top';

preg_match_all("/(\w+=\w+)(#\w+)?/i",$url,$match);
var_export($match);

返回:
array (
0 =&gt;
array (
    0 =&gt; 'm=admin',
    1 =&gt; 'c=index',
    2 =&gt; 'a=lists',
    3 =&gt; 'catid=1',
    4 =&gt; 'page=1#top',
),
1 =&gt;
array (
    0 =&gt; 'm=admin',
    1 =&gt; 'c=index',
    2 =&gt; 'a=lists',
    3 =&gt; 'catid=1',
    4 =&gt; 'page=1',
),
2 =&gt;
array (
    0 =&gt; '',
    1 =&gt; '',
    2 =&gt; '',
    3 =&gt; '',
    4 =&gt; '#top',
),
)
</code></pre>
<h3 id="url常用处理方法">url常用处理方法</h3>
<pre><code>/**
* 将字符串参数变为数组
* @param $query
* @return array
*/
function convertUrlQuery($query)
{
    $queryParts = explode('&amp;', $query);
    $params = array();
    foreach ($queryParts as $param) {
      $item = explode('=', $param);
      $params[$item] = $item;
    }
    return $params;
}

/**
* 将参数变为字符串
* @param $array_query
* @return string
*/
function getUrlQuery($array_query)
{
    $tmp = array();
    foreach ($array_query as $k =&gt; $param) {
      $tmp[] = $k . '=' . $param;
    }
    $params = implode('&amp;', $tmp);
    return $params;
}

例:
echo "&lt;pre&gt;";
$url = 'http://localhost/test.php?m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1#top';
$arr = parse_url($url);
$arr_query = convertUrlQuery($arr['query']);
var_export($arr_query);

返回:
array (
'm' =&gt; 'admin',
'c' =&gt; 'index',
'a' =&gt; 'lists',
'catid' =&gt; '1',
'page' =&gt; '1',
)


var_export(getUrlQuery($arr_query));

返回:
m=admin&amp;c=index&amp;a=lists&amp;catid=1&amp;page=1
</code></pre><br><br>
来源:https://www.cnblogs.com/fuqian/p/11736859.html
頁: [1]
查看完整版本: php解析url几种方式