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】WebサービスのAPIを使ってCSVファイルを作ってみた!

久々にPHPのネタでも書こうかと。 PHPとってもここ最近いろんなWebサービス …

PHPでフォームから入力された文字列が全角・半角スペースのみの場合のチェック

検索すれば、沢山でてくると思うけど、よくフォームで入力した値をphpでチェック( …

【PHP】サムネイル画像を作成・保存

よくプロフィール画像をアップしたりするとサムネイル画像を表示するときがあると思う …

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

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

【PHP】preg_replaceで最初と最後の/を取り除いてみた!

文字列置換というとereg_replaceとかpreg_replaceで正規表現 …

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

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

【PHP】phpでファイルのアップロード

ファイルのアップロードのシーンって結構ありそうなの定型文のようにメモっておこう。 …

【PHP】多次元配列をあるキーを基準に並び替えたい

ある案件で画像のパス、タイトル、カテゴリ、リンク先などのデータを多次元配列で管理 …

no image
mysqlの文字化け対策

フォームから入力した値をmysqlのテーブルに登録するときに日本語が化けてしまっ …

【PHP】sessionの完全な破棄

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