- ベストアンサー
URLに付く [] を外したい
- 現在稼働中のWebシステムの保守を担当しています。お客様からの依頼で、URLに付いている [] を削除したいですが、方法が分からず困っています。
- フォームを送信すると、URLが xxx.php?aaa[]=1,2,3&bbb[]=1,2,3 のように表示されます。このURLを xxx/aaa/1,2,3/bbb/1,2,3/ に変更したいです。
- [ ] を削除する理由は、広告登録フォームでURLがエラーになるためです。URLエンコードでは問題が解決せず、カンマ区切りも望ましくありません。xxx/aaa/1,2,3/bbb/1,2,3/ の形が望ましいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>このフォームを送信するとURLは以下のようになりますが、 >xxx.php?aaa[]=1,2,3&bbb[]=1,2,3 HTMLの文法上は、そうなりません。 aaa[]=1&aaa[]=2&aaa[]=3&bbb[]=1&bbb[]=2&bbb[]=3 となるはずです。 もしaaa[]=1,2,3などとなっているのであれば、JavaScriptで送信データを生成しているはずですから、 そのプログラムでaaa/1,2,3となるように書き換えれば良いと思います。 -------------------- >あくまで >xxx/aaa/1,2,3/bbb/1,2,3/ >の形が良いとのことでした。 いずれにしてもこの形式で「送信」するには、JavaScriptでデータを生成しないとダメだと思います。 サーバーで受信してからの話であればPHPで$_GET["aaa"][0]、$_GET["aaa"][1]を結合し直せば良いでしょうけど、 ただの二度手間じゃないですかね。
その他の回答 (2)
- wormhole
- ベストアンサー率28% (1626/5665)
>弊社では、今稼動しているソースを頼りに、カスタマイズなどの保守を行っています。 そういう事でしたら、[]を削除して問題ないかまずはソースを解析して調べるしかないのではないでしょうか。 何となく"[]"の有無でチェックボックスかどうかの判断をしてそうな気はしますけど。
お礼
ありがとうございます。 "[]"の有無でチェックボックスかどうかの判断…ではなかったですが、 受け取った値が配列だったらURLを書き換えてリダイレクトするという処理を見つけました。
- wormhole
- ベストアンサー率28% (1626/5665)
[]を消すことによって、そのwebシステムにどういう影響があるのか消していいものなのかどうかわかるのは、そのwebシステムを構築した業者だと思いますので、たずねるならそのwebシステムを構築した業者ではないでしょうか?
お礼
ありがとうございます。 Webシステムを構築した業者はどこだか分かりません。 倒産したのかなどの詳しい話は分かりませんが、 こういった内部仕様が分かる資料やそれを知っている人もいないようです。 弊社では、今稼動しているソースを頼りに、カスタマイズなどの保守を行っています。 ちなみに、 <input type="checkbox" name="aaa[]" value="1"> <input type="checkbox" name="aaa[]" value="2"> <input type="checkbox" name="aaa[]" value="3"> の部分を <input type="checkbox" name="aaa" value="1"> <input type="checkbox" name="aaa" value="2"> <input type="checkbox" name="aaa" value="3"> として、 チェックボックスすべてにチェックを付けて送信しても、 URLは xxx.php?aaa=1&aaa=2&aaa=3&bbb=1&bbb=2&bbb=3 となるはずだと思いますが .htaccess で書き換えられた結果は xxx/aaa/3/bbb/3/ となってしまいます。
お礼
> aaa[]=1&aaa[]=2&aaa[]=3&bbb[]=1&bbb[]=2&bbb[]=3 > となるはずです。 確かに、サンプルのformを送信してみたら、 urlは回答いただいたものになりました。 aaa[]/1,2,3のように書き換えているところを探したら、 JavaScriptではなかったですが、 phpでリダイレクトさせている箇所を見つけました。 その部分をaaa/1,2,3に変更し、 あとはexplode(",", $_GET["aaa"])で修正前と同じ配列に戻して対応しました。 重要なヒントになりました。ありがとうございました。