0

存在しない場合に最初http_build_queryに a を追加する方法を知っている人はいますか??

現在、index.php を追加していますか? 私のすべてのリンクに。したくない理由がありますか?リンクにハードコードされています。http_build_query が何らかの方法で存在しない場合にそれを追加するだけであれば、それは大きな助けになります。

4

3 に答える 3

1

http_build_query()は URL を解析しないため、返された文字列をどこに追加しているかを知ることができません。?まだ URL がない場合は to URL を追加し、その結果を追加できますhttp_build_query()

例:

$params = http_build_query(...);
if (strrpos($url, '?') !== strlen($url) - 1) {
    // if the value in $url does not end with a ?, append one
    $url .= '?';
}
$url .= $params;
于 2013-08-17T19:46:34.797 に答える
0

$urlクエリ文字列を追加する部分を保持し、$qの結果である場合http_build_query、ワンライナーは次のようになります。

$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;

もちろん、その一般的なケースの前提は、$url が有効であり、既存のクエリ文字列が URL エンコードされていることです。

いくつかのテストコード:

$url = 'http://google.com';
$params = array('q'=>'something', 'q2'=>'something else');
$q = http_build_query($params);
$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;
echo 'Original url: ', $url, PHP_EOL, 'Final url: ', $url2, PHP_EOL;
$url = 'http://google.com/?extra=som';
$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;
echo 'Original url: ', $url, PHP_EOL, 'Final url: ', $url2, PHP_EOL;

そして出力:

Original url: http://google.com
Final url: http://google.com?q=something&q2=something+else
Original url: http://google.com/?extra=som
Final url: http://google.com/?extra=som&q=something&q2=something+else
于 2013-08-17T20:09:30.753 に答える