ホームページ  >  記事  >  バックエンド開発  >  PHPで配列をURLに変換する方法

PHPで配列をURLに変換する方法

PHPz
PHPzオリジナル
2023-04-18 14:07:09727ブラウズ

インターネットの継続的な発展に伴い、私たちはデータの送信と交換にますますネットワークに依存するようになりました。 Web の閲覧、電子商取引、オンライン支払いのいずれにおいても、私たちは皆、URL を使用して必要な情報を送信および取得する必要があります。

PHP では、URL パラメーターを渡して処理するために、配列を URL に変換する必要があることがよくあります。この記事では、PHP 配列を URL に変換する方法を説明し、参考となる実用的なコード例を示します。

変換方法

PHP では、http_build_query() 関数を使用して配列を URL 形式に変換できます。 http_build_query() 関数は、配列を URL エンコードに変換し、すべてのパラメーターのキーと値のペアを含む文字列を生成します。 http_build_query() 関数の構文は次のとおりです。

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

この関数には 4 つのパラメータがあります。

  • query_data: 必須パラメータ。URL に変換されるデータは連想パラメータにすることができます。配列 。
  • numeric_prefix: オプションのパラメーター。このパラメーターが true に設定されている場合、キー名にプレフィックスが自動的に追加されます。デフォルトでは、プレフィックスは「parameters[]」です。
  • arg_separator: オプションのパラメータ、パラメータ間の区切り文字、デフォルト値は「&」です。
  • enc_type: オプションのパラメータ、エンコードタイプ、デフォルトは PHP_QUERY_RFC1738 です。このパラメータが PHP_QUERY_RFC3986 に設定されている場合、RFC3986 エンコード タイプが使用されます。

サンプル コード

次は、配列を URL に変換するコード例です:

<?php
$parameters = array(
    &#39;username&#39; => 'myusername',
    'password' => 'mypassword',
    'city' => 'New York',
    'state' => 'NY',
);

$url_parameters = http_build_query($parameters);

$url = 'http://www.example.com/login?' . $url_parameters;

echo $url;
?>

この例では、連想配列 $parameters を定義します。ここで、いくつかのキーと値のペアが含まれます。次に、http_build_query() 関数を使用して配列を URL エンコードされた文字列に変換し、$url_parameters 変数に保存します。

最後に、URL に $url_parameters を追加して最終的な URL を生成し、echo 関数を使用して画面に出力します。

出力結果:

http://www.example.com/login?username=myusername&password=mypassword&city=New+York&state=NY

これは、PHP 配列を URL に変換する最も基本的な方法の 1 つです。

拡張アプリケーション

PHP 配列を URL に変換する方法を説明しました。次に、そのアプリケーションをより深く理解できるように、より高度な使用法をいくつか取り上げます。

  1. プレフィックス

2 番目のパラメーター numeric_prefix を使用して、パラメーター名にプレフィックスを追加できます。次の例では、配列内のパラメータ名に「data[ ]」という接頭辞を付けます。

<?php
$data = array(
    1 => 'foo',
    2 => 'bar',
    3 => 'faz'
);

$query = http_build_query($data, 'data[]');

echo $query;
?>

出力結果:

data%5B%5D=foo&data%5B%5D=bar&data%5B%5D=faz
  1. urlencode()

URL 内のパラメータをさらに制御したい場合は、URL を生成する前に、 urlencode() 関数はパラメータ値をエンコードします。例:

<?php
$parameters = array(
    &#39;username&#39; => 'myusername',
    'password' => 'mypassword',
    'city' => urlencode('New York'),
    'state' => urlencode('NY'),
);

$url_parameters = http_build_query($parameters);

$url = 'http://www.example.com/login?' . $url_parameters;

echo $url;
?>

この例では、urlencode() 関数を使用して「New York」と「NY」をエンコードし、URL に不正な文字が表示されないようにします。最終的な URL は次のようになります。

http://www.example.com/login?username=myusername&password=mypassword&city=New+York&state=NY
  1. Advanced Array

配列に多次元の部分配列が含まれている場合は、再帰を使用して配列全体を URL に変換できます。例:

<?php
$parameters = array(
    &#39;username&#39; => 'myusername',
    'password' => 'mypassword',
    'address' => array(
        'city' => 'New York',
        'state' => 'NY',
        'zip' => '10001'
    )
);

function build_query_string_recursive(array $array, $prefix = null) {

    $query = array();

    foreach($array as $key => $value) {
        $new_key = is_null($prefix) ? $key : sprintf('%s[%s]', $prefix, $key);

        if(is_array($value)) {
            $query[] = build_query_string_recursive($value, $new_key);
        } else {
            $query[] = sprintf('%s=%s', urlencode($new_key), urlencode($value));
        }
    }

    return implode('&', $query);
}

$url_parameters = build_query_string_recursive($parameters);

$url = 'http://www.example.com/login?' . $url_parameters;

echo $url;
?>

この例では、build_query_string_recursive() 関数を使用して配列全体を URL に変換します。この関数は再帰を使用して多次元配列を処理し、すべてのキーと値のペアが URL エンコード形式に正しく変換されるようにします。

最後に、URL に $url_parameters を追加して最終的な URL を生成し、echo 関数を使用して画面に出力します。

出力結果:

http://www.example.com/login?username=myusername&password=mypassword&address[city]=New+York&address[state]=NY&address[zip]=10001

結論

PHP 配列を URL に変換することは、データの受け渡しと処理に非常に便利な方法です。この記事では、http_build_query() 関数をいくつかの実用的な例とともに紹介します。

単純な配列または多次元配列を URL に変換する必要がある場合でも、これらの例はタスクを正常に完了するのに役立ちます。読んでいただきありがとうございます。この記事がお役に立てば幸いです。

以上がPHPで配列をURLに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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