72

以下のような配列を取る必要があります。

$subids = Array
    (
        [s1] => one
        [s2] => two
        [s3] => three
        [s4] => four
        [s5] => five
        [s6] => six
    )

http://example.com?s1=one&s2=two&s3=three=&s4=four&s5=five&s6=sixなどの URL を生成します。

すべてのサブ ID が常に定義されているわけではなく、s3 が定義されていない場合もあるため、URL に追加しないでください。さらに、最初のサブ ID が何であれ、? が必要です。アンパサンド (&) の代わりにその前に

したがって、配列が次の場合:

$subids = Array
    (
        [s2] => two
        [s6] => six
    )

URL はhttp://example.com?s2=two&s6=sixである必要があります

これまでのところ、次のものがあります。

$url = ' http://example.com '

    foreach ($subids AS $key => $value) {
        $result[$id]['url'] .= '&' . $key . '=' . $value;
    }

ただし、 ? を追加する最善の方法が何であるかはわかりません。最初のキーと値のペアの先頭。

これに役立つPHP関数があるように感じますが、あまり見つかりません。CI が提供するもので使用できるものがある場合は、Codeigniter を使用しています。

4

3 に答える 3

172

必要なのはhttp_build_queryだけです:

$final = $url . "?" . http_build_query($subids);
于 2012-11-07T18:57:51.747 に答える
18

関数で使用できますhttp_build_query()。php.netの例:

<?php
$data = array(
    'foo' => 'bar',
    'baz' => 'boom',
    'cow' => 'milk',
    'php' => 'hypertext processor',
);

echo http_build_query( $data ) . "\n";
echo http_build_query( $data, '', '&amp;' );
?>

そして、この行を出力します:

foo=bar&baz=boom&cow=milk&php=hypertext+processor
foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor

ソースから読むことができます:http ://www.php.net/manual/en/function.http-build-query.php

ところで、WordPressで使用する場合は、次の関数を使用できます:http: //codex.wordpress.org/Function_Reference/add_query_arg

楽しむ。:)

于 2012-11-07T18:59:43.203 に答える
1

http_build_query()関数を使用できますが、たとえば、URL が外部関数からのものである場合は、必ずいくつかの検証を行ってください。

$url = getUrlSomewhere();
$params = ['param' => 'value', 'param2' => 'value2'];
$queryParams = http_build_query($params);
if (strpos($url, '?') !== FALSE) {
    $url .= '&'. $queryParams;
} else {
    $url .= '?'. $queryParams;
}

PECL 拡張機能がある場合は、http_build_url()を使用できます。これは、既存の URL にさらにパラメーターを追加するか、他の検証の中で考慮しないかを既に考慮しています。

于 2020-04-01T03:41:18.057 に答える