ホームページ  >  記事  >  バックエンド開発  >  http_build_query、parse_url、parse_str を使用して、php を通じて URL を作成および解析する方法

http_build_query、parse_url、parse_str を使用して、php を通じて URL を作成および解析する方法

jacklove
jackloveオリジナル
2018-06-09 10:07:401702ブラウズ

1.http_build_query

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

string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )

パラメータ:
query_data
配列または属性を含むオブジェクトを指定できます。

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

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

numeric_prefix
基になる配列で数値添字が使用され、このパラメーターが指定された場合、パラメーター値は基になる配列の数値として使用されます。 array 添字付き要素の接頭辞。

これは、後でデータをデコードするときに、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 に従ってエンコードされ、スペースはパーセント エンコードされます ( )。
例 1: query_data パラメーターのみを使用します

<?php$data = array(    &#39;name&#39; => &#39;fdipzone&#39;,    &#39;gender&#39; => &#39;male&#39;,    &#39;profession&#39; => &#39;programmer&#39;,    &#39;explain&#39; => &#39;a new programmer&#39;);echo http_build_query($data);?>

出力:
name=fdipzone&gender=male&profession=programmer&explain=a new programmer


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

<?php$data = array(&#39;fdipzone&#39;,&#39;male&#39;,&#39;programmer&#39;,&#39;a new programmer&#39;);echo http_build_query($data, &#39;info_&#39;, &#39;#&#39;, PHP_QUERY_RFC3986);?>

を指定します。

Output:

info_0=fdipzone#info_1=male#info_2=programmer#info_3=a%20new%20programmer

2.parse_url

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

mixed parse_url ( string $url [, int $component = -1 ] )

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

##component# に置き換えられます。 ## PHP_URL_PATH、PHP_URL_QUERY、または PHP_URL_FRAGMENT のいずれかを使用して、URL の指定された部分の文字列を取得します。 (PHP_URL_PORT として指定された場合を除き、整数値が返されます)。
戻り値:

著しく修飾されていない URL の場合、parse_url() は FALSE を返す場合があります。 返されるデータには、通常、次の
スキーム (http など)、ホスト、ポート、ユーザー、パス、パス、クエリ (疑問符の後?)、フラグメント (ハッシュ記号 # の後) が含まれます。

例:

<?php$url = &#39;http://fdipzone:123456@www.fdipzone.com:80/test/index.php?id=1#tag&#39;;
print_r(parse_url($url));echo parse_url($url, PHP_URL_SCHEME).PHP_EOL;echo parse_url($url, PHP_URL_HOST).PHP_EOL;echo parse_url($url, PHP_URL_PORT).PHP_EOL;echo parse_url($url, PHP_URL_USER).PHP_EOL;echo parse_url($url, PHP_URL_PASS).PHP_EOL;echo parse_url($url, PHP_URL_PATH).PHP_EOL;echo parse_url($url, PHP_URL_QUERY).PHP_EOL;echo parse_url($url, PHP_URL_FRAGMENT).PHP_EOL;?>
出力:

Array(
    [scheme] => http
    [host] => www.fdipzone.com
    [port] => 80
    [user] => fdipzone
    [pass] => 123456
    [path] => /test/index.php
    [query] => id=1
    [fragment] => tag
)
http
www.fdipzone.com80fdipzone123456/test/index.php
id=1tag
3.parse_str

parse_str は次のようになります。文字列は複数の変数に解析されます。
void parse_str ( string $str [, array &$arr ] )

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

パラメータ:


str
入力文字列

arr

2 番目の変数 arr が設定されている場合、変数は置換として配列要素としてこの配列に格納されます。 例 1:
現在のスコープに解決

<?php$str = &#39;name=fdipzone&gender=male&profession=programer&explain=a new programmer&#39;;
parse_str($str);echo $name.PHP_EOL;echo $gender.PHP_EOL;echo $profession.PHP_EOL;echo $explain.PHP_EOL;?>
出力:

fdipzone
male
programera new programmer

例 2:

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

<?php$str = &#39;name=fdipzone&gender=male&profession=programer&explain=a new programmer&#39;;
parse_str($str, $arr);
print_r($arr);?>
出力:

Array(
    [name] => fdipzone
    [gender] => male
    [profession] => programer
    [explain] => a new programmer
)
4. URL のクエリ パラメーターを取得して解析します

最初に parse_url を使用してクエリを取得し、次に parse_str を使用してパラメータを解析します。
<?php$url = &#39;http://www.fdipzone.com/test/index.php?name=fdipzone&gender=male&profession=programmer&explain=a new programmer&#39;;$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $data);
print_r($data);?>

出力:

Array(
    [name] => fdipzone
    [gender] => male
    [profession] => programmer
    [explain] => a new programmer
)
この記事では、http_build_query の使用方法について説明します。 parse_url、parse_str を使用して URL を作成および解析します。その他の関連コンテンツについては、php 中国語 Web サイトに注意してください。

関連する推奨事項:

html5 を使用してシェイク関数を実装する方法


MySql メソッドを使用して auto_increment を表示および変更する方法


php を通じて Web デスクトップへのショートカットを生成する方法

以上がhttp_build_query、parse_url、parse_str を使用して、php を通じて URL を作成および解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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