6

ここSOの誰かが、URLのハッシュ(#)をphp関数parse_urlで取得できると言っていましたか?これは本当ですか?

私のWebサイトには多くのajax効果があり、ハッシュ値に基づいて情報を表示できるように、ハッシュ付きのURLをindex.phpに渡せるようにしたいと考えています。

例えば。ユーザーが私のWebサイトをクリックしてナビゲートし、共有したいものを見つけた場合、そのアドレスをコピーして友人に送信すると、この人が入ると同じものが表示されます。

javascriptを使用してハッシュ値をCookieに保存しようとしましたが、Firefoxでは機能せず、Safariでは遅すぎます(HTMLが最初に表示されるため、正しいコンテンツを表示するには、ページをもう一度更新する必要があります)。

他の解決策は大歓迎です

編集:私は非常に混乱しています..私がparse_urlを使用する場合、私はハッシュを取得するためにphpで自分でURLを入力する必要がありますか?それでは、ポイントは何ですか...私の友人が#値でURLを入力でき、phpがそれを処理できるかどうかという私の質問ですか?いいえのようです、私は正しいですか?

4

5 に答える 5

11

URLのハッシュはサーバーに到達しません。サーバー側のプログラミング言語からアクセスする方法はありません。

于 2009-12-24T06:32:51.703 に答える
6

parse_url()URL文字列からハッシュを取得できます。署名に注意してください:

mixed parse_url ( string $url [, int $component = -1 ] )

あなたはすでに文字列を知っている必要があります。たとえば、ドキュメントから:

<?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

キー「fragment」の下のエントリに注意してください。

于 2009-12-24T06:33:28.913 に答える
0

ここSOの誰かが、URLのハッシュ(#)をphp関数parse_urlで取得できると言っていましたか?これは本当ですか?

はい:

parse_url('http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php/1957040#1957040', PHP_URL_FRAGMENT); // 1957040

ただし、完全なURLを事前に知らなければ、サーバー側でハッシュを判別することはできません。HTTP_REFERERがこのハッシュを保持しているかどうかはわかりません(考えないでください)。

于 2009-12-24T06:34:20.363 に答える
0

PHPマニュアルの例:

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?> 
于 2009-12-24T06:35:06.947 に答える
0

javascriptを使用して#valueを取得したら、ajaxまたは.... urlを使用してサーバーに送り返します:http ://example.in/?paramvalue = PKDVS4G#access_token = 463d3d40-bdbb-04f3-ddb2-c35e2bd9ffa8

<script>     
alert(window.location.hash);
var myhashvalue = window.location.hash;
//hash value like :  #access_token=463d3d40-bdbb-04f3-ddb2-c35e2bd9ffa8
//ajax call to send myhashvalue to server
</script>   
于 2017-05-06T06:10:07.500 に答える