ホームページ バックエンド開発 PHPチュートリアル PHP は http_build_query、parse_url、parse_str を使用して URL を作成および解析します

PHP は http_build_query、parse_url、parse_str を使用して URL を作成および解析します

Jul 25, 2016 am 08:46 AM
parse_url

php は http_build_query、parse_url、および parse_str を使用して URL を作成および解析します。必要な友達はそれを参照できます。


1.http_build_query

http_build_query は、urlencode の後にリクエスト文字列を作成できます。

  1. string http_build_query (mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
コードをコピー



パラメータ:
クエリデータ
配列またはプロパティを含むオブジェクトを指定できます。

query_data 配列は、単純な 1 次元構造、または配列で構成される配列 (他の配列を含むことができる) にすることができます。

query_data がオブジェクトの場合、パブリック属性のみが結果に追加されます。

numeric_prefix
基礎となる配列で数値添字が使用されており、このパラメーターが指定されている場合、このパラメーター値は基礎となる配列内の数値添字要素のプレフィックスとして使用されます。

これは、後でデータをデコードするときに、PHP またはその他の CGI プログラムが有効な変数名を取得できるようにするためです。

arg_separator
このパラメータが指定されて使用されない限り、arg_separator.output がパラメータを区切るために使用されます (このパラメータは php.ini で使用でき、デフォルトは「&」です)。

enc_type
デフォルトでは、PHP_QUERY_RFC1738 が使用されます。

enc_type が PHP_QUERY_RFC1738 の場合、エンコードは ? RFC 1738 標準と application/x-www-form-urlencoded メディア タイプに基づいて行われ、スペースはプラス記号 (+) としてエンコードされます。

enc_type が PHP_QUERY_RFC3986 の場合、? RFC 3986 に従ってエンコードされ、スペースはパーセント (%20) でエンコードされます。


例 1: query_data パラメーターのみを使用します

  1. <?php
  2. $data = array(
  3. '名前' => 'fdipzone',
  4. '性別' => '男性',
  5. '職業' => 'プログラマー',
  6. '説明' => '新しいプログラマー'
  7. );
  8. echo http_build_query($data);
  9. ?>
コードをコピー

出力:
名前=fdipzone&性別=男性&職業=プログラマー&説明=a+新人+プログラマー



例 2: query_data は 1 次元の添字配列を使用し、
を指定します numeric_prefix=info_,arg_separator=#,enc_type=PHP_QUERY_RFC3986

  1. <?php
  2. $data = array('fdipzone','男性','プログラマー','新しいプログラマー');
  3. echo http_build_query($data, 'info_', '#', PHP_QUERY_RFC3986) ;
  4. ?>
コードをコピー

出力:

  1. info_0=fdipzone#info_1=male#info_2=programmer#info_3=a%20new%20programmer
コードをコピー
2.parse_url

parse_url は URL を解析し、そのコンポーネントを返します

  1. mixed parse_url ( string $url [, int $component = -1 ] )
コードをコピー



パラメータ:
URL
解析される URL。無効な文字は _

に置き換えられます。

コンポーネント
URL の指定された部分の文字列を取得するには、PHP_URL_PATH、PHP_URL_QUERY、または PHP_URL_FRAGMENT のいずれかを使用します。 (PHP_URL_PORT として指定された場合を除き、整数値が返されます)。

戻り値:
parse_url() は、著しく修飾されていない URL に対して FALSE を返す場合があります。

返されるデータには通常、次のタイプが含まれます
スキーム (http など)、ホスト、ポート、ユーザー、パス、パス、クエリ (疑問符の後?)、フラグメント (ハッシュ記号 # の後)


例:

  1. <?php
  2. $url = 'http://fdipzone:123456@www.fdipzone.com:80/test/index.php?id=1#tag';
  3. print_r(parse_url($url) );
  4. echo parse_url($url, PHP_URL_SCHEME).PHP_EOL;
  5. echo parse_url($url, PHP_URL_HOST).PHP_EOL;
  6. echo parse_url($url, PHP_URL_PORT).PHP_EOL;
  7. echo parse_url($url, PHP_URL_USER).PHP_ EOL ;
  8. echo parse_url($url, PHP_URL_PASS).PHP_EOL;
  9. echo parse_url($url, PHP_URL_PATH).PHP_EOL;
  10. echo parse_url($url, PHP_URL_QUERY).PHP_EOL;
  11. echo parse_url($url, PHP_URL_FRAGMENT).PHP_EOL;
  12. ?>
コードをコピー

出力:

  1. 配列
  2. (
  3. [スキーム] => http
  4. [ホスト] => www.fdipzone.com
  5. [ポート] => 80
  6. [ユーザー] => fdipzone
  7. [パス] => 123456
  8. [パス] => /test/index.php
  9. [クエリ] => id=1
  10. [フラグメント] => タグ
  11. )
  12. www.fdipzone.com
  13. 80
  14. fdipzone
  15. / test/index.php
  16. id=1
  17. タグ
コードをコピー
3.parse_str

parse_str は文字列を複数の変数に解析します

  1. void parse_str ( string $str [, array &$arr ] )
コードをコピー

str が URL によって渡されたクエリ文字列である場合、それを変数に解析し、現在のスコープに設定します。


パラメータ:
ストラ
入力文字列

arr
2 番目の変数 arr が設定されている場合、変数は代わりに配列要素としてこの配列に格納されます。


例 1: 現在のスコープに解決します

  1. <?php
  2. $str = 'name=fdipzone&gender=男性&職業=プログラマー&explain=新しいプログラマー';
  3. parse_str($str);
  4. echo $name.PHP_EOL;
  5. echo $gender.PHP_EOL;
  6. echo $ professional.PHP_EOL;
  7. echo $explain.PHP_EOL;
  8. ?>
コードをコピー

出力:

  1. fdipzone
  2. 男性
  3. プログラマー
  4. 新人プログラマー
コードをコピー



例 2: 結果を arr 配列に保存します

  1. <?php
  2. $str = 'name=fdipzone&gender=男性&profession=プログラマー&explain=新人プログラマー';
  3. parse_str($str, $arr);
  4. print_r($arr);
  5. ?>
コードをコピー

出力:

  1. 配列
  2. (
  3. [名前] => fdipzone
  4. [性別] => 男性
  5. [職業] => プログラマー
  6. [説明] => 新しいプログラマー
  7. )
コードをコピー
4. URL のクエリパラメータを取得して解析します。

最初に parse_url を使用してクエリを取得し、次に parse_str を使用してパラメータを解析します

  1. <?php
  2. $url = 'http://www.fdipzone.com/test/index.php?name=fdipzone&gender=男性&職業=プログラマー&説明=新人プログラマー';
  3. $query = parse_url($url 、PHP_URL_QUERY);
  4. parse_str($query, $data);
  5. print_r($data);
  6. ?>
コードをコピー

出力:

  1. 配列
  2. (
  3. [名前] => fdipzone
  4. [性別] => 男性
  5. [職業] => プログラマー
  6. [説明] => 新しいプログラマー
  7. )
コードをコピー
php、http


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles