php urlを解析しurl中のパラメータとurlパラメータを取得する4つの方法

4045 ワード

次のコードはphpがurlを解析し、urlのパラメータを得ます.コードは次のようになります.

 string 'content' (length=7)
          'c' => string 'index' (length=5)
          'a' => string 'lists' (length=5)
          'catid' => string '6' (length=1)
          'area' => string '0' (length=1)
          'author' => string '0' (length=1)
          'h' => string '0' (length=1)
          'region' => string '0' (length=1)
          's' => string '1' (length=1)
          'page' => string '1' (length=1)
 */
function convertUrlQuery($query)
{
  $queryParts = explode('&', $query);
  $params = array();
  foreach ($queryParts as $param) {
    $item = explode('=', $param);
    $params[$item[0]] = $item[1];
  }
  return $params;
}
/**
 *         
 * @param $array_query
 * @return string string 'm=content&c=index&a=lists&catid=6&area=0&author=0&h=0&region=0&s=1&page=1' (length=73)
 */
function getUrlQuery($array_query)
{
  $tmp = array();
  foreach($array_query as $k=>$param)
  {
    $tmp[] = $k.'='.$param;
  }
  $params = implode('&',$tmp);
  return $params;
}

php urlパラメータの取得方法を4つの例で説明します.
既知のURLパラメータの場合、私たちは自分の状況に応じて$_を採用することができます.GETは、対応するパラメータ情報($_GET['name'])を取得する.では、未知の場合、URL上のパラメータ情報をどのように取得するのでしょうか.
1つ目、利用$SERVER内蔵配列変数
比較的オリジナルの$SERVER['QUERY_STRING']で取得します.URLのパラメータは、通常、この変数を使用して返されるデータと似ています.name=tank&sex=1ファイル名を含める必要がある場合は$SERVER["REQUEST_URI"](類似を返します:/index.php?name=tank&sex=1)
第二に、pathinfo内蔵関数を利用する
コードは次のとおりです.

 
 

結果は次のとおりです.

Array
(
   [dirname] => http://localhost //url   
   [basename] => index.php //     
   [extension] => php //     
   [filename] => index //   
)
*/
?>

3つ目は、parse_を利用するurl内蔵関数
コードは次のとおりです.

 
 

結果は次のとおりです.

Array
(
   [scheme] => http //      
   [host] => localhost //   
   [path] => /index.php //  
   [query] => name=tank&sex=1 //      
   [fragment] => top //      
)
*/
?>

第四にbasename内蔵関数を利用する
コードは次のとおりです.

 
 

結果は次のとおりです.

index.php?name=tank&sex=1#top
*/
?>

また,自分で正則マッチングの処理方式で必要な値を取得する.この方式は比較的正確で、効率はしばらく考慮しない...次に、実践の下で正則的な処理方法を拡張します.
コードは次のとおりです.

 
 

結果は次のとおりです.

Array
(
  [0] => Array
    (
      [0] => name=tank
      [1] => sex=1#top
    )
  [1] => Array
     (
      [0] => name=tank
       [1] => sex=1
     )
   [2] => Array
    (
       [0] =>
      [1] => #top
    )
)
*/
?>