Web.fla

主食は、html/css/php/javascript(jQuery) デザートはactionscript!WEBに関することをメモってくサイト

*

【PHP】URLを分解して配列で取り出すには?

      2015/02/19

PHPでプログラムをするとやっぱURLって結構いじるときありますよね。
例えば、MVCでURLの一部分を文字列として扱ったり、余計な文字列を削除したり・・・など、URLを解析してURLのドメインやスキーマ、ポート番号、クエリパラメータなどの情報を取得したいと言う場面って結構あると思うんで自分の為にもメモ。

パラメータがついてるURL

単純なURLだったらまだしも、たいていパラメーターがたくさんついたURLだったりしません?URLの末尾(?以降)の文字列のことなんですけど、クエリ文字列っていいます。

まぁこいつを分解(以下 パース)となるともうめんどくさいですよね(笑)

という訳で以下の手順でちょっと分解してみようかと思います。

  • URLデコードを行う
  • URLを連想配列に分解する
  • URLの中からパラメーターの部分(?以降)を取り出す

という流れでレッツスタート!

URLを分解・分析する全体のコード

まずは、全体のコードを載せておきます。

URLデコードを行う

URLはよく「%E3%81%9D%E3%81%B5%E3%81%83%E3%81」みたいにエンコードされてることがあるので、そいつを一旦、urldecode()でデコードして戻す。

URLを連想配列に分解する

さて、ここでparse_url()を使います。

parse_urlは第1引数に指定されたURLを解析してその結果を連想配列で返してくれる関数です。

その、連想配列の中身は下記のようになっています。

URLの中からパラメーターの部分(?以降)を取り出す

連想配列に分解した後、パラメーターは$url[‘query’]の中に入っていますが、「param1=AAA&param2=BBB」のままなので、まだ分解しきれていません。

もし、パラメーターの個々の値が必要な時はさらに分解する必要があるので、そんな時は parse_str() を使う事によってパースできます。

parse_strは、指定したクエリ文字列(パラメーターの部分)をパース(分解)し、変数に格納する関数です。

第1引数にparse_urlで分解した$url[‘query’]を指定する。第2引数に分解したパラメーターを連想配列で保存するための変数を指定します。そうすると下記のように連想配列として分解されています。

下記参考サイト

ということで以上でおしまいなんですが、一応サンプルを作りました。「【PHP】URLを分解して配列で取り出すには?

 - php , , , ,

     

Message

  関連記事

【PHP】画像をダウンロードして特定のディレクトリに保存する方法

よくブラウザで画像を右クリック名前をつけて保存。なんていうのやることあるけど、p …

【PHP】Cookie(クッキー)にデータを保存するには!?

PHPでプログラムする上でやっぱCookie(クッキー)について勉強することもあ …

【PHP】PHPでリロード対策をして二重投稿を防止しよう

phpでフォームとか作ってデータを送信できた!!!って喜んでるのもつかの間(笑い …

【PHP】CSV ファイルをダウンロードするプログラムは?

phpでCSVをダウンロードする時って割と見ると思うんですが、そういえばphpで …

【PHP】session 個別で削除

前回はセッションでログアウトする際にセッション全体を削除したけど、それぞれセッシ …

[PHP]CSVを読み込み時、文字化けさせないで読み込む方法とは!?

PHPを利用してCSVを読み込んだり書き込んだりする処理はよくあると思います。た …

phpでfor文で列で横並びさせるときに左のみマージンをなくす

まぁある案件で、画像ギャラリーをphpで管理していたときにcsvデータからデータ …

【PHP】sessionの完全な破棄

よくあるログインすると「~~様こんにちは」みたいなログイン情報を保持して破棄する …

【PHP】ページ送り機能|連番で振っていくバージョン

phpの案件でデータを10件ずつ表示されて次のデータを表示するときに「次」「前」 …

PHPでユーザーエージェントを判別

前回はjavscriptでユーザーエージェントを判別していたが、PHPもついでに …