• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP ソートについて)

PHP ソートについて

このQ&Aのポイント
  • ゲットしたキーワードを再ソートする際に、値が2回エンコードされてしまう問題について解決方法を教えてください。
  • 始めにゲットした値を1回だけエンコードし、ソートを変えても1回目のエンコードされた値を使う方法について教えてください。
  • PHPのソート機能を用いて、キーワードのソート順を変えることができますが、再ソートすると値がエンコードされてしまう問題が発生します。この問題を解決する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

ちょっとプログラムの作り方を間違えています。 「urlを作るときは、urlencodeする」 「htmlを出力するときは、htmlspecialcharsする」 のが基本です。どちらもデータの出力処理のところで行うのです。 データの入力処理のところで行ってはいけません。 質問者さんのコードでは、入力段でurlencodeしており、 そのurlencodeしたものをhtmlspecialcharsするhtml出力に使っているため、おかしなことになるのです。 コードで示すならば、 --- $base = 'http://xxx.xxxxxx.co.jp/xxx/xxx'; $keyword =$_GET["keyword"]; $sort = $_GET["sort"]; $url = $base ."&keyword=".urlencode($keyword)."&sort=".urlencode($sort). ; <form action="<?=$_SERVER["SCRIPT_NAME"] ?>" method="get"> <input type="hidden" name="keyword" value="<?php print(htmlspecialchars($keyword, ENT_QUOTES)); ?>"> 以下略 --- といった感じにしてください。。

a4orece
質問者

お礼

すばらしいです。確かに、よく考えたら入力段階urlencodeしてるのでソートを切り替える度にurlencodeされてしまいますよね。おかげさまで理想の動きになりました。勉強になりました。ありがとうございました。

関連するQ&A