2012-04-06 9 views
1

URLリンクを作成していますが、GET変数の1つにハッシュ記号があります。ウェブページは、ハッシュマークの後のデータを読み取ることはありません。私は2つの理由からそれを取り出すことはできません。URL GET変数に必要なハッシュ記号があります

  1. ウェブサイトデータベース(私によって設計されていない)は、さまざまなデータ項目のハッシュ記号を持っています。私はデータベースを編集する権限がありません。そして、私が他のことができたら、それは壊れてしまうだろう。
  2. URLのウェブページを編集できません。それは誰か他の人によって設計されたもので、私はそれを編集する権限がありません。

URLは、Webページは、この正確な文字列のためのデータベースを検索しますよう#defが必要である。この

  www.example.com?datapoint1=abc&datapoint2=#def 

ようになります。ウェブページのPHPを編集できれば、必要に応じてハッシュを入れることができますが、私が言ったように、私はそうしません。

もう少し説明してください。ユーザーはデータを(Javaアプリケーションで)収集し、データは長いURLに入れられます(上記の例のようにより複雑です)、このリンクを使用して特定のユーザーに自動的に電子メールで送信されます。 2番目のユーザーはリンクをクリックし、何をしなくてもやります。

私は唯一の方法は、WebページのPHPまたはjavascriptを編集することだと思います。任意のアイデアをいただければ幸いです。

+0

http_build_queryでURLを構築するか、urlencodeを使用して値を正しくエスケープします。もしあなたがそれを行うことができないのであれば、クライアント側だけであり、サーバーに送られることもないので(おそらくあなたが醜いJSハッカーをしていない限り)、おそらく運が悪いでしょう。 – Corbin

+0

私はurlencodeがうまくいくと思います。 – heyanshukla

+0

ハッシュ文字は、ブラウザに送信される前にエスケープされなければならないか、運が悪いです。 JSソリューションがOKならJSのURLを再構築し、ハッシュ値をurlencodeしてブラウザを送信して修正することができると思いますが、それは地獄のように醜いです。 – sg3s

答えて

3

あなたのURLは次のようになりますので、%23として#をエンコードする必要があります:それは簡単に、あなたがPHPの組み込みでurlencode関数を使用することができようにするには

www.example.com?datapoint1=abc&datapoint2=%23def 

http://php.net/urlencode

1

ハッシュパートにならないようにするには、URL内のハッシュをエスケープする必要があります。 #のURLエンコード文字は%23です。

phpでurlencode()php.net doc)を使用して値をエスケープすることができます。

また、URLクエリを生成し、キー値配列から適切に値をエンコードできるhttp_build_query_string()について知りたいことがあります。詳細については、php.net examplesをご覧ください。

PHPにアクセスできないが準最適なJSを使用できる場合は、ハッシュが存在すると見なされたときにURLを書き換える小さなスクリプトを作成できます(ハッシュが存在しない場合のみ動作します)そうでない場合)

if(window.location.hash) { 
    // Hash detected, lets rebuild the url 
    window.location.href = window.location.href + '%23' + window.location.hash.slice(1); 
} 
関連する問題