2011-01-21 5 views
0

PHPのquerystringからデータを取得する方法がわかりません。PHPのクエースリングからデータを取得する

access_tokenからデータを取得したいと考えています。

http://www.mygridview.com/sephora/index.php?mod=config#access_token=170791786296375|983b6aefceafdb1cf2d5a122-100001848355029|Hc8qGl6xgpXlmhOWQrLv910on_8&expires_in=0

私はPHPでこれをどのように行うのですか?

+0

正解は、そのURLをPHPでどのように利用できるようにするかによってまったく異なります。どうか明らかにしてください。 [これは少なくとも四つ組です](http://stackoverflow.com/search?q=fragment+url+php)ので、あなたが試したアプローチのうちのどれを試してみたのか、なぜそれがまだ機能していないのかを指摘してください。 – Gordon

+0

[PHP&Hash/Fragment URL of URL]の複製が可能です。(URL:http://stackoverflow.com/questions/1162008/php-hash-fragment-portion-of-url) – Gordon

+0

どのURLを解析しようとしていますか?現在のページのURL、または別の場所から取得したURLですか? – Gareth

答えて

1

URLのアンカー部分がサーバーに送信されることはありません。したがって、この情報を現在のURLからロードしようとすると、そこには存在しません。

限り、サーバーに関しては、ブラウザによってロードされたURLは、それはいくつかのJavaScriptは、ページの状態を復元するためにアンカーの情報を使用している可能性が(多分そう)ですhttp://www.mygridview.com/sephora/index.php?mod=config

ですそれがAJAXを使用して変更された後。その場合、アンカー情報をサーバーに送信するためには、Javascriptが必要です。

+0

それからどうしたらいいですか? – Chirayu

+0

parse_url()が答えです。 –

+2

@Shakti Singh:フラグメントを取得するために現在のページのURLを 'parse_url()'することはできません。与えられたURL文字列だけです。 – BoltClock

0

urlを取得してから、urlにparse関数を適用します。 例えば::

$url = 'http://username:[email protected]/path?arg=value#anchor'; 

print_r(parse_url($url)); 

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

このフラグメントは、あなたの条件です。もし私が正しいなら、これを試してみてください。 :) おかげで現在のURLを取得するための

::

function getInstance($uri = 'SERVER') 
    { 

      if ($uri == 'SERVER') 
      { 
       if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) { 
        $https = 's://'; 
       } else { 
        $https = '://'; 
       } 

       if (!empty ($_SERVER['PHP_SELF']) && !empty ($_SERVER['REQUEST_URI'])) { 
        $theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 

        if (strlen($_SERVER['QUERY_STRING']) && strpos($_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING']) === false) { 
         $theURI .= '?'.$_SERVER['QUERY_STRING']; 
        } 
       } 
       else 
       { 
        $theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']; 
        if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) { 
         $theURI .= '?' . $_SERVER['QUERY_STRING']; 
        } 
       } 

       $theURI = urldecode($theURI); 
       $theURI = str_replace('"', '"',$theURI); 
       $theURI = str_replace('<', '&lt;',$theURI); 
       $theURI = str_replace('>', '&gt;',$theURI); 
       $theURI = preg_replace('/eval\((.*)\)/', '', $theURI); 
       $theURI = preg_replace('/[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']/', '""', $theURI); 

     } 
     echo (string)$theURI; 
    } 
+0

しかし、この$ urlはハードコードされています。どのように私はPHPからこのURLを得ることができます。 – Chirayu

+0

動作しない場合は、このリンク を参照してください。この$の_SERVER [「PATH_INFO」] を試してみてくださいhttp://www.webcheatsheet.com/PHP/get_current_page_url.php –

+0

私はすでにこれを試してみました。これはアンカー文字列を返していません。 – Chirayu

関連する問題